Hibernate学习笔记3
Hibernate学习笔记3
学习课程:
13_多对一关联映射.avi |
Hibernate_03_manyToone |
14_一对一主键关联映射_单向.avi |
Hibernate_04_oneToone_pk_1 |
14_一对一主键关联映射_双向.avi |
Hibernate_05_oneToone_pk_2 |
16_一对一唯一外键关联映射_单向.avi |
Hibernate_06_oneToone_upk_1 |
16_一对一唯一外键关联映射_双向.avi |
Hibernate_07_oneToone_upk_2 |
学习内容:
多对一关联映射 |
一对一主键关联映射_单向 |
一对一主键关联映射_双向 |
一对一唯一外键关联映射_单向 |
一对一唯一外键关联映射_双向 |
一对一主键关联映射_单向
|
一对一主键关联映射_双向
|
一对一唯一外键关联映射_单向
|
一对一唯一外键关联映射_双向
|
1.多对一关联映射
多对一关联映射 关联映射的本质: * 将关联关系映射到数据库(关联关系:对象模型在内存中的一个或多个引用) 在多的一段的映射文件加入 <many-to-one name="group" cloumn="groupid"/><!--group为SQLServer的关键字所以要指定外键--> 在"多"的一端加入字段作为外键参照"一"端 重要属性(cascade)级联 *级联的意思是指定两个而对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的
级联对象也需要执行想同的操作 *总工可以取值为: all、none、save-update、delete *all——代表在所有的情况下都执行级联操作 *none——在所有的情况下都不执行级联操作 *save-update——在保存和更新的时候执行级联操作 *delete——在删除的时候执行级联操作 *如:<many-to-one name="group" column="groupid" cascade="all"/> persistent状态的对象不能引用 transisent状态的对象
testLoad1 查询保存在user_message中的数据信息,以及相关外键的信息
|
||||||||||||||
1.修改原先定义好的User类中id属性类型为int
2.在User.hbm.xml文件中添加字段<many-to-one name="group" column="groupid" ></many-to-one>,修改生成策略为native
3.新建Group.java实体类添加字段 id name 以及get和set方法 id类型int name类型String,并且生成相应的配置文件,其中生成策略为native
4.执行testExport.java |
||||||||||||||
测试类中方法的主要代码片段:
|
2.一对一主键关联映射_单向
一对一关联映射(one-to-one) *两个对象之间是一对一的关系,如Person—IdCard *有两种策略可以实现一对一的关联映射 *主键关联:即让两个对象具有相同的主键值, 以表明他们之间的一一对应的关系, 这样可以避免多余的字段被创建; 数据库不会有额外的字段来维护它们之间的关 系,仅通过表的主键来关联 *唯一外键关联:外键关联,本来是用于多对一的配置,但是如果加上唯一的限制之 后,也可以用来表示一对一关联关系。
单向关联 :只能一端访问另一段。 双向关联 :两端可以进行互相访问。 hibernate_04_oneToone_pk_1 例子 Person :(int id ),(String name),(IdCard idCard) IdCard :(int id ),( String cardNo) Person中的id字段作为一个外键参照IdCard中的id字段, 即Persion中的id字段的数据来源于IdCard中的id字段值,共享IdCard的主键 设置Person.hbm.xml生成策略为foreign,加参数<param name="property">idCard</param>
只是Hibernate怎么加载它的关联对象,默认根据主键加载 <one-to-one name="idCard" constrained="true"(外键约束,表名当前主键上存在一个约束,Person 的主键作为外键参照IdCard) ></one-to-one>
一对一关联映射中默认了cascade属性 所以不用保存IdCard就能够运行成功。
session.save(person);执行过该语句后Hibernate发送insert into idCard_message 当提交事务以后Hibernate再发送insert into person_message session.get( 类名,id值); 通过人来查找身份证号。 |
||||
测试类,方法的主要代码:
|
2.一对一主键关联映射_双向
Person <----> IdCard 在IdCard端持有person的引用 在IdCard.hbm.xml中加入<one-to-one name="person"/>指向person 指示Hibernate如何加载person 默认根据加载主键 进行加载的时候,使用IdCard查询Person.name 只发送一条查询语句,fatch默认join,只发送一条外连接
|
||||||
相关主要代码:
|
3.一对一唯一外键关联映射——单向
多对一映射的特例 hibernate04_oneToone_upk_1 person_message与idCard_message 增加字段IdCard,person主键自增 <many-to-one name="idCard" unique="true" />显示多的一端的多重性唯一
|
||||
相关主要代码:
|
4.一对一唯一外键关联映射——双向
在idcard中加入字段person 采用one-to-one来进行映射 ,指示hibernate如何加载其关联对象,默认根据主键加载person,因为外键 关联映射中采用,因为两个实体采用的是person的外键进行维护的关系,所以不能指定主键加载person, 而要根据person的外键进行加载,所以设置property-ref属性来指定向哪个字段进行比较 <one-to-one name="person" property-ref="idCard" /> |
||||||
相关主要代码:
|
提示:
修改one-to-one中的属性不用重新生成表 修改many-to-one中的属性需要重新生成表 |
文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/fengda2870/article/details/3083686
- 点赞
- 收藏
- 关注作者
评论(0)