1.<set> 元素来映射持久化类的 set 类型的属性
–name: 设定待映射的持久化类的属性的
2. <set> 元素的 inverse 属性
2.1 在hibernate中通过对 inverse 属性的来决定是由双向关联的哪一方来维护表和表之间的关系.
inverse = false 的为主动方,inverse = true 的为被动方, 由主动方负责维护关联关
2.2 在没有设置 inverse=true 的情况下,父子两边都维护父子关系
2.3 在 1-n 关系中,将 n 方设为主控方将有助于性能改善
(如果要国家元首记住全国人民的名字,不是太可能,但要让全国人民知道国家元首,就容易的多)
2.4 在 1-N 关系中,若将 1 方设为主控方
–会额外多出 update 语句。
–插入数据时无法同时插入外键列,因而无法为外键列添加非空约束
<!-- inverse: 指定由哪一方来维护关联关系. 通常设置为 true, 以指定由多的一端来维护关联关系 -->
<set name="orders" table="ORDERS" inverse="true" >
<key column="CUSTOMER_ID"></key>
<one-to-many class="Order"/>
</set>
3. <set> 元素的cascade 属性:它用于指定如何操纵与当前对象关联的其他对象. (设置级联操作)
3.1 cascade="delete" 会删除所有的关联
<set name="orders" table="ORDERS" inverse="true" cascade="delete">
<key column="CUSTOMER_ID"></key>
<one-to-many class="Order"/>
</set>
3.2 cascade="delete-orphan" 会自动删除解除关联的对象。
@Test
public void testCascadeDelete(){
Customer customer = (Customer) session.get(Customer.class, 33);
customer.getOrders().clear(); //解除关联
}
<set name="orders" table="ORDERS" inverse="true" cascade="delete-orphan">
<key column="CUSTOMER_ID"></key>
<one-to-many class="Order"/>
</set>
3.3 cascade="save-update" 级联保存
4. <set> 元素的个 order-by 属性:当 Hibernate 通过 select 语句到数据库中检索集合对象时, 利用 order by 子句进行排序