快速业务通道

Hibernate各种映射关系总结 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
ng>

Hibernate各种映射关系总结(3)

时间:2010-12-14 javaeye nintenyun

2.4 one-to-one 外键双向mapping

只需要在另一端(IdCard)加入<one-to-one>标签,但是hibernate默 认按照主键加载,所以要告诉hibernate按照指定列来加载

示意:

Xml代码

Id-card <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.nintenyun.hibernate">    <class name="IdCard" table="t_idcard">     <id name="id" column="id">      <generator class="identity"/>     </id>     <property name="cardNo" column="cardno" />     <one-to-one name="person" property-ref="idCard"></one-to- one>    </class> </hibernate-mapping>

3 一对多映射

1  建立对象模型

Classes[id-int,name-String,student-Set] Student[id-int,name-String]

2  映射文件

Xml代码

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.nintenyun.hibernate">    <class name="Class" table="t_class">     <id name="id">      <generator class="native"/>     </id>     <property name="name" />     <set name="student" >     <key column="classid" />     <one-to-many class="Student"/>     </set>    </class> </hibernate-mapping>

缺点:若将Student的classid设置为非空,将无法保存。应为不是student这 一端维护关系,所以student不知道是哪个班级,所以需要发出多余的update语 句来更新关系。

(一对多): 先要session.sava(学生),再sessio.save(班级)

(多对一): 先要session.sava(班级),再sessio.save(学生)

改进 采用 一对多双向关联

Xml代码

<set name="student" inverse="true">    <set name="student" inverse="true">

这样的好处是 存入数据让多的一端进行维护,不需要发出多余的 update.

Hibernate?÷??ó3é?1??μ×ü?á(4)

ê±??:2010-12-14 javaeye nintenyun

4 ?à???àmapping

μ¥?ò£¨2éó?μúèy·?±í£?

1?? ???ó?£Dí

Role[id-int,name-String] User[id-int,name-String,role-Set]

2ó3é????t

Xml′ú??

<?xml??version="1.0"?> <!DOCTYPE??hibernate-mapping??PUBLIC ?? "-//Hibernate/Hibernate??Mapping??DTD??3.0//EN" ?? "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping??package="com.nintenyun.hibernate"> ???? <class??name="User"??table="t_user"> ?????? <id??name="id"> ???????? <gen

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号