hibernate注解.doc_第1页
hibernate注解.doc_第2页
hibernate注解.doc_第3页
hibernate注解.doc_第4页
hibernate注解.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

环境:Hibernate 3.3.1 Maven 3.0.4 MySQL 5.5.13 Myeclipse 8.6.1建表语句:DROP TABLE IF EXISTS t_company;CREATE TABLE t_company ( companyId int(10) unsigned NOT NULL AUTO_INCREMENT, companyName varchar(30) NOT NULL, PRIMARY KEY (companyId) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gb2312;INSERT INTO t_company VALUES (1, Sun);INSERT INTO t_company VALUES (2, Apache);DROP TABLE IF EXISTS t_employee;CREATE TABLE t_employee ( employeeId int(10) unsigned NOT NULL AUTO_INCREMENT, employeeName varchar(15) NOT NULL, cid int(10) unsigned NOT NULL, PRIMARY KEY (employeeId) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gb2312;INSERT INTO t_employee VALUES (1, Tom, 1);INSERT INTO t_employee VALUES (2, Summ, 1);INSERT INTO t_employee VALUES (3, Cat, 2);INSERT INTO t_employee VALUES (4, Vinylon, 1);INSERT INTO t_employee VALUES (5, Dog, 2);目录结构:Employee.javapackage com.fancy.po;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;/* * - * 文件: Employee.java * 作者: fancy * 邮箱: * 时间: 2012-6-10 * 描述: 实体类 * - */* * 下面只说ManyToOne,如需了解其他注解, * 可以参考上一篇:/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html */EntityTable(name = t_employee)public class Employee private Integer employeeId; private String employeeName; private Company company; Id GeneratedValue(strategy = GenerationType.AUTO) public Integer getEmployeeId() return employeeId; /* * ManyToOne:多对一,cascade:级联,请参考上一篇 * fetch = FetchType.LAZY,延迟加载策略,如果不想延迟加载可以用FetchType.EAGER */ ManyToOne(cascade = CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH,fetch = FetchType.LAZY) JoinColumn(name = cid) public Company getCompany() return company; public String getEmployeeName() return employeeName; public void setEmployeeId(Integer employeeId) this.employeeId = employeeId; public void setEmployeeName(String employeeName) this.employeeName = employeeName; public void setCompany(Company company) pany = company; Company.javapackage com.fancy.po;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;/* * - * 文件: Company.java * 作者: fancy * 邮箱: * 时间: 2012-6-10 * 描述: 实体类 * - */* * 下面只说OneToMany,如需了解其他注解, * 可以参考上一篇:/fancyzero/archive/2012/06/10/hibernate-one-to-one-annotation.html */EntityTable(name = t_company)public class Company private Integer companyId; private String companyName; private Set employees; Id GeneratedValue(strategy = GenerationType.AUTO) public Integer getCompanyId() return companyId; /* * OneToMany 与 OneToOne相似的也用mappedBy,参考了Employee * 可以参考上一篇 */ OneToMany(mappedBy = company) public Set getEmployees() return employees; public String getCompanyName() return companyName; public void setCompanyId(Integer companyId) panyId = companyId; public void setCompanyName(String companyName) panyName = companyName; public void setEmployees(Set employees) this.employees = employees; pom.xml 4.0.0 com.fancy hibernate-annotation-many-to-one-example 0.0.1-SNAPSHOT jar hibernate-annotation-many-to-one-example UTF-8 org.hibernate hibernate-entitymanager 3.3.1.ga org.hibernate hibernate-annotations 3.3.1.GA mysql mysql-connector-java 5.1.17 junit junit 3.8.1 test Test.javapackage com.fancy.test;import java.util.Iterator;import java.util.Set;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;import com.fancy.po.Company;import com.fancy.po.Employee;/* * - * 文件: Test.java * 作者: fancy * 邮箱: * 时间: 2012-6-10 * 描述: 测试类 * - */public class Test public static void main(String args) /读取hibernate配置,默认读取classpath下的hibernate.cfg.xml Configuration conf = new AnnotationConfiguration(); /构建session工厂 SessionFactory sessionFactory = conf.configure().buildSessionFactory(); /打开session Session session = sessionFactory.openSession(); /开始事务 session.beginTransaction(); / * * * * * * * * * * * * * * * * * * * * * * * * * * * * /test1(session); /测试 1 /test2(session); /测试 2 test3(session); /测试 3 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * /提交事务 session.getTransaction().commit(); /关闭session工厂 sessionFactory.close(); /关闭session session.close(); public static void test1(Session session) Company company = (Company)session.get(Company.class, 1); /发出Company的select语句 Set employee = company.getEmployees(); /不发出Employee的select语句 System.out.println(Company : + company.getCompanyName(); System.out.println(CountSum: + employee.size(); /Employee初次被使用,发出select语句 Iterator it = employee.iterator(); /Employee不再发出select语句 while(it.hasNext() System.out.println(EmployeeName: + it.next().getEmployeeName(); public static void test2(Session session) Company company = (Company)session.get(Company.class, 2);/发出Company的select语句 Set employee = company.getEmployees(); /不发出Employee的select语句 Iterator it = employee.iterator(); /发出Employee的select语句 Employee e = null; Boolean first = false; while(it.hasNext() e = it.next(); if(!first) System.out.println(EmployeeId: + e.getEmployeeId() + information will be change); e.setEmployeeName(fancy); /更改雇员名字 / session.save(e); /发出Employee的update语句,不发出Company的update语句 session.save(company); /发出Employee的update语句,不发出Company的update语句 first = true; System.out.println(EmployeeName: + e.getEmployeeName(); public static void test3(Session session) Employee employee = (Employee)session.get(Employee.class, 1);/发出Employee的select语句 Company company = (Company)session.get(Company.class, 1);/发出Company的select语句 company.setCompanyName(Oracle); /更改公司名字 / session.save(company);/发出Company的update语句,不发出Employee的update语句 session.save(employee);/发出Company的update语句,不发出Employee的update语句 多对一的话,在many的对象中有一个属性就是one对象,而表结构中就是many表有one表的外键。反过来的话,在one对象里面有many对象的集合(List、Set等都可以)。评论|给力0不给力0 2011-11-21 14:53 zz270564642|五级你问得好奇怪,比如:一个Teacher类,一个Student类Class Teacherprivate int id;private String teacherName;private Set students ;/添加get() and set()。Class Studentprivate int stuId;private String stuName;private int teacherId;/添加get() and set()。你用了Hibernate了吗?保存Teacher对象的时候是会直接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论