Hibernate 关联关系映射
多对一关系映射
多对一的典型例子就是Employee和Department的关系 :Employee(n)----------(1)Department
其在数据库中的表现as follows:
使用hibernate的话,其对象就应该是这样:
public class Employee{ private int id;private String name;private Department depart;...//省略setter and getter }
public class Department{ private int id;private String name;...//省略setter and getter }
mapping file should be like follows(Employee.hbm.xml):
<class name ="Employee"><!--..省略其他配置..--><many-to-one ></many-to-one name="depart" column="depart_id"></class>
Department.hbm.xml和以前配置一样,保持不变。
在查询主对象时,关联的对象默认使用懒加载机制
若要想在session关闭后访问关联对象,有三种办法:
1.在session关闭之前访问关联对象属性。
2.使用Hibernate.initial(emp.getDepart())[emp is an instance of Employee]。
3.在配置文件的class标签上设置lazy为false。
一对多关联关系
对象模型应该是这样:
public class Department {private Set<Employee> emps;}
mapping file(Department.hbm.xml)
<class name ="emps"><!--..省略其他配置..--><set name="emps">
<key column="depart_id"></key>
<one-to-many class="Employee"/>
</set></class>
关系模型和一对多一样,保持不变。