1.Hibernate关联关系
一对一的关联关系
1) 共享主键:两个对象联系紧密
子表:主键同时又是外键(是父表的主键)
父表
类 Person Idcard
关系属性 idCard person
映射文件中:
<class name="父表" table="xx">
<id name="xx" column="xxx">
<generator class="increment"/><!--主键由自己控制-->
</id>
..
<!--关系属性 四个要素
1.关系属性 name
2.关系属性的类对应的表 class
3.外键
4.级联
-->
<one-to-one name="关系属性" class="关系属性的全路径" cascade="all"></one-to-one>
</class>
<class name="子表" table="xxxx">
<id name="xx" column="xxxxx">
<generator class="foreign"><!--子表的主键不由自动控制-->
<param name="property">关系属性名</param>
</generator>
</id>
<!--constrained="true" 明确父子关系-->
<one-to-one name="xxx" class="xxxx" cascade="all" constrained="true"></one-to-one>
</class>
2)唯一外键:
子表:会添加一个外键列(父表的主键),通过配置文件加上唯一性约束
父表:
<class name="xxxx" table="父表">
<id name="xx" column="xxxx">
<generator class="increment"/>
</id>
...
<!--关系属性-->
<one-to-one name="xxx" class="xxxxx" cascade="save-update"
property-ref="关系属性"></one-to-one>
</class>
<class name="xxx" table="子表">
<id name="xx" column="xxxx">
<generator class="increment"/>
</id>
...
<!--关系属性 子表有外键,外键的本质就是多对一-->
<many-to-one unique="true" name="xxx" class="xxxx"
column="外键列" cascade="save-update" ></many-to-one>
</class>
在使用hibernate的API
1.传递性持久化:在对对象进行操作时会将与其关联的对象执行相关操作
2.hibernate操作的是内存当中的对象,不会直接操作数据库中的数据,在处理有关联关系
的对象时要先在内存中解除他们的关系。
一对多 1:*
Employee Dept 一个员工对应一个部门,一个部门对应多个员工
* 1
关系属性 Dept Set<Employee> emps=new HashSet<Employee>();
为什么要使用Set:
1.Set可以去重复
2.如果关系属性是一个集合,要使用set接口类型,而不能使用Hashset,也Hibernate 延迟加载有关系
对象之间的单向和双向关系由业务需求而定
建表
t_employee
普通的列 + 外键列 d_id
t_dept
普通的列
cascade='save-update' 删除时要解除关系
1.如果删除的当前对象能够从<class>标签中获得明确的外键信息
无须再内存中解除关系直接删除
2.如果删除的对象从<class>标签中不能获得明确的外键信息
必须现在内存中解除关系,再删除 注意 inverse="true"的配置会使<key标签失效>
一般为没有明确外键信息的对象提供解除关系的工具方法
发表评论
-
Hibernateday06 QBC(Query by Criteria)
2012-07-24 16:59 866QBC (Query by Criteria)由hiberna ... -
Hibernateday06 SQLQuery 和NameQuery
2012-07-24 16:58 1252SqlQuery:在hibernate中使用sql Q ... -
Hibernateday06 HQL(Hibernate Query Language)
2012-07-21 22:18 1209HQL(hibernate query language) ... -
Hibernateday06学习笔记
2012-07-21 21:58 978HQL(hibernate query language) ... -
Hibernateday05继承关系union-subclass映射策略
2012-07-21 21:43 1017union-subclass映射策略 特点:父表 ... -
Hibernateday05继承关系joined-subclass映射策略
2012-07-21 00:07 8372.joined-subclass映射策略 特点:父 ... -
Hibernateday05继承关系subclass映射策略
2012-07-21 00:00 7632.继承关系 O Product //产品 ... -
Hibernateday05由一个主键类,将对象当中的联合作为主键的属性描述成一个对象【主键类的复合主键】
2012-07-20 23:53 8812.由一个主键类,将对象当中的联合作为主键的属性描述成一个对象 ... -
Hibernateday05对象当中的几个属性组合作为表的主键【实体类属性的复合主键】
2012-07-20 23:47 871复合主键 注意:1.对象必须实现序列化接口 1. ... -
Hibernateday05主键生成器(hilo)
2012-07-20 23:36 961主键生成器 generator class="xxx ... -
Hibernateday05学习笔记
2012-07-20 23:24 8101.一对多自身相关 员工找经理 关系属性 Emp ... -
Hibernateday04多对多关系
2012-07-19 23:19 715多对多 O Student C ... -
Hibernateday04一对多的自身相关(双向关系)
2012-07-19 01:04 735自身相关的双向关系 class Emp{ Inte ... -
Hibernateday04一对多的自身相关(从经理找员工)
2012-07-19 00:21 728从经理找员工{1:*} class Emp{ Integ ... -
Hibernateday04一对多的自身相关(从员工找经理)
2012-07-18 23:45 789对多的自身相关 以Emp表为例:一个雇员会有多个下属, ... -
Hibernateday04学习笔记
2012-07-18 23:19 661一对多 O Dept ... -
Hibernateday03一对多双向操作
2012-07-17 23:44 6721.建表 create table g_dept( ... -
Hibernateday03一对多单向操作
2012-07-17 22:37 762一对多 1:* Employee ... -
Hibernateday02表的唯一外键
2012-07-24 16:57 863一对一:唯一外键:为外键加上唯一约束 公司 Com ... -
Hibernateday02表的共享主键
2012-07-16 21:55 798关联关系 1:1 人 Person ...
相关推荐
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
openEuler20.03学习笔记.txt
希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf
2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip...
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能...
CCNA学习笔记 CCNA学习笔记 CCNA学习笔记
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...
docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...
PHP个人学习笔记
ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1
Contiki学习笔记:进程、事件、etimer关系 Contiki 实例: Contiki学习笔记:创建两个交互进程 Contiki 主函数剖析: Contiki学习笔记:main函数剖析 Contiki学习笔记:启动一个进程process_start Contiki学习笔记...