1.在映射对象之间建立一对多关系one-to-many
1)在一的一方的类中添加集合属性Set
2)在一的一方的映射文件中添加
3)使用时,通过对象的getXXX方法获取
2.在映射对象之间建立多对一关系many-to-one
1)在多的一方的类中添加一方类型的属性去掉关联字段的属性
2)在多的一方的映射文件中添加
column="user_id">
去掉原有关联字段的映射
3)使用时,通过对象的getXXX方法获取
3.关系使用时的技巧
1)在hbm.xml中利用fetch属性指定抓取方式
a.fetch="join"
采用join表连接方式抓取相关对象.
b.fetch="select"(默认)
采用单独发送一个SQL语句的方式查询相关对象.
注意:在实际开发中,不推荐在hbm.xml中利用fetch属性控制.推荐使用HQL+join fetch方式.参考TestAddress.java的testFetch()方法
2)cascade级联操作
对主对象操作时,相关联的对象属性也执行相同操作.
在hbm.xml中为关联属性添加cascade,可以指定
cascade="save-update":当对主对象执行save和update操作时,相关联的对象属性也执行save和update操作
cascade="delete":当对主对象删除时,相关联的对象属性也执行删除
cascade="all":对save,update,delete操作都支持
注意:级联删除执行的是n+1个delete语句,如果遇到n比较大时,不推荐使用级联,推荐使用删除的HQL.
"delete from Address where userId=30"
3)inverse关系控制
inverse主要用于指定两个对象的关系由哪一方来负责维护.其实就是使用update语句更新user_id字段的值.默认情况下,Hibernate认为关系维护双方负责.
为了程序效率,将关系维护工作交给多的一方处理.即在
4)formula子查询映射
将一个子查询结果,映射到一个属性上.参考User.hbm.xml
2018年全国计算机等级考试调整方案
[考试动态]2017年11月20日全国计算机等级考试计算机基础及Photoshop应用试题答案汇总(6套)
[Photoshop应用]2017年2月3日全国计算机等级考试四级数据库系统工程师试题及答案汇总(22套)
[数据库工程师]2017年2月2日全国计算机一级考试模拟试题及答案300题
[WPS Office应用]2017年1月22日2017年3月全国计算机等级考试报名时间及报名入口汇总
[考试动态]2017年1月3日