hibernate多对一:hibernate关联映射-多对一来源: 发布时间:星期六, 2009年2月21日 浏览:0次 评论:0
几种关联:
多对:Employees--Department ; 多个员工对应个部门. 映射文件: <many-to-one name="depart" column="depart_id" /> department.java package sa.fs121.do; public Department { private id; private String name; public getId { id; } public void Id( id) { this.id = id; } public String getName { name; } public void Name(String name) { this.name = name; } } Employee.java package sa.fs121.do; public Employee { private id; private String name; private Department depart; public getId { id; } public void Id( id) { this.id = id; } public String getName { name; } public void Name(String name) { this.name = name; } public Department getDepart { depart; } public void Depart(Department depart) { this.depart = depart; } } 即:员工部门,映射到部门实体. 使用hibernate映射员工和部门外键关系: Employee.hbm.xml <hibernate-mapping package="sa.fs121.do"> < name="Employee"> <id name="id"> <generator ="native" /> </id> <property name="name" /> <!-- 表示员工depart属性,对应depart表中id值,参考depart中id值表示整个对象; 通过反射,hibernate可以找到depart对应department类, 然后通过depart这个对象id值,找到department表中参考外键, 缺省情况下,hibernate外键参考对象,就是department表中主键id. 即:depart参考,就是department这个表中主键,也可以手工指定参考对象: 使用:property-ref="xxxx",进行声明 --> <many-to-one name="depart" column="depart_id" /> </> </hibernate-mapping> Department.hbm.xml <hibernate-mapping package="sa.fs121.do"> < name="Department"> <id name="id"> <generator ="native" /> </id> <property name="name" unique="true" /> </> </hibernate-mapping> 测试代码: Department add { Session s = null; Transaction tx = null; try { Department depart = Department; depart.Name("department1"); Employee employee = Employee; employee.Name("user1"); employee.Depart(depart); s = HibernateUtils.getSession; tx = s.beginTransaction; s.save(depart); s.save(employee); tx.commit; depart; } catch (HibernateException e) { // TODO Auto-generated catch block e.prStackTrace; } finally { (s != null) { s.close; } } null; } 由于employee和department都处于持久态,所以session能捕获到其变化,并更新数据表. 且使用时,应该先创建department,否则会多出更新语句,耗费资源. 0
相关文章
读者评论发表评论 |