源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java Hibernate延迟加载

  • 时间:2020-02-02 07:48 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java Hibernate延迟加载
示例数据表:team(班级)、certificate(身份证)、student(学生) [img]http://files.jb51.net/upload/20081001171043644.jpg[/img] [b][i][u]Team.hbm.xml[/u][/i][/b] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!--     Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping>     <class name="edu.dgut.ke.model.Team" table="TEAM" [b]lazy ="true"[/b] ><!-- 多对一的延迟加载设置 -->         <id name="id" type="java.lang.String">             <column name="ID" length="32" />             <generator class="uuid.hex" />         </id>         <property name="teamname" type="java.lang.String">             <column name="TEAMNAME" length="32" not-null="true" unique="true" />         </property>         <set name="students" inverse="true" cascade="all" [b]lazy="true" [/b]> <!-- 一对多的延迟加载设置 -->             <key>                 <column name="TEAMID" length="32" not-null="true" />             </key>             <one-to-many class="edu.dgut.ke.model.Student" />         </set>     </class> </hibernate-mapping> [u][i][b]Certificate.hbm.xml[/b][/i][/u] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!--     Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping>     <class name="edu.dgut.ke.model.Certificate" table="CERTIFICATE"[b] lazy="true"[/b] ><!-- 一对一的延迟加载设置 -->         <id name="id" type="java.lang.String">             <column name="ID" length="32" />             <generator class="uuid">             </generator>         </id>         <property name="describe" type="java.lang.String">             <column name="`DESCRIBE`" length="50" not-null="true" />         </property>         <one-to-one name="student"         class="edu.dgut.ke.model.Student"          [b]constrained="true"[/b] ><!-- 一对一的延迟加载设置 -->         </one-to-one>     </class> </hibernate-mapping> [b][i][u]Student.hbm.xml[/u][/i][/b] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!--     Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping>     <class name="edu.dgut.ke.model.Student" table="STUDENT" lazy="true" >         <id name="id" type="java.lang.String">             <column name="ID" length="32" />             <generator class="uuid.hex" />         </id>         <many-to-one name="certificate"         class="edu.dgut.ke.model.Certificate"         unique="true"         column="cardId"         cascade="all"         >         </many-to-one>         <many-to-one name="team" class="edu.dgut.ke.model.Team">             <column name="TEAMID" length="32" not-null="true" />         </many-to-one>         <property name="studentname" type="java.lang.String">             <column name="STUDENTNAME" length="16" not-null="true" unique="true" />         </property>     </class> </hibernate-mapping> [b]注意:对one-to-one 关系进行延迟加载和其他关系相比稍微有些不同。many-to-one 的延迟加载是在配置文件的class 标签 上设置 lazy="true" ,one-to-many 和 many-to-many 的延迟加载是在 set 标签中设置lazy="true"。而one-to-one 不只要在 classs 标签设置 lazy="true",而且要在one-to-one 标签中设置constrained="true" 。 如果不设置constrained="true",则一对一查询使用默认的预先抓取策略(fetch="join")。[/b]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部