1012--映射一对多关联关系(.双向 1-n)

双向 1-n 与 双向 n-1 是完全相同的两种情形
双向 1-n 需要在 1 的一端可以访问 n 的一端 , 反之依然 .
域模型 : Order Customer 的多对一双向关联需要在 Order 类中定义一个 Customer 属性 , 而在 Customer 类中需定义存放 Order 对象的集合属性
关系数据模型 :ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的主键
 
Session 从数据库中加载 Java 集合时 , 创建的是 Hibernate 内置集合类的实例 ,
  因此 在持久化类中定义集合属性时必须把属性声明为 Java 接口类型
Hibernate 的内置集合类具有集合代理功能 , 支持延迟检索策略
事实上 ,Hibernate 的内置集合类封装了 JDK 中的集合类 ,
  这使得 Hibernate 能够对缓存中的集合对象进行脏检查 , 按照集合对象的状态来同步更新数据库。
在定义集合属性时 , 通常把它初始化为集合实现类的一个实例 .
  这样可以提高程序的健壮性 , 避免应用程序访问取值为 null 的集合的方法抛出 NullPointerException
Hibernate 使用 <set> 元素来映射 set 类型的属性
.set
< set > 元素来映射 持久化类的 set 类型的属性
name: 设定待映射的持久化类的属性的
 
< key > 元素 设定与所关联的持久化类对应的表的外键
column: 指定关联表的外键名
 
< one-to-many > 元素 设定集合属性中所关联的持久化类
class: 指定关联的持久化类的类名
 
<set> 元素的 inverse 属性
hibernate 中通过对 inverse 属性的来决定是由双向关联的哪一方来维护表和表之间的关系 . inverse = false 的为主动方,
  inverse = true 的为被动方 , 由主动方负责维护关联关系
在没有设置 inverse=true 的情况下,父子两边都维护父子

  关系

1-n 关系中,将 n 方设为主控方将有助于性能改善 ( 如果要国家元首记住全国人民的名字,
  不是太可能,但要让全国人民知道国家元首,就容易的多 )
1-N 关系中,若将 1 方设为主控方
会额外多出 update 语句
插入数据时无法同时插入外键列,因而无法为外键列添加非空约束
 
<set> 元素的cascade 属性
在对象 关系映射文件中 , 用于映射持久化类之间关联关系的元素 ,
 <set>, <many-to-one> <one-to-one> 都有一个 cascade 属性 , 它用于指定如何操纵与当前对象关联的其他对象 .
 
在数据库中对集合排序 
<set> 元素有一个 order-by 属性 , 如果设置了该属性 ,
  Hibernate 通过 select 语句到数据库中检索集合对象时 , 利用 order by 子句进行排序
order-by 属性中还可以加入 SQL 函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值