hibernate集合映射
?
Hibernate集合映射Hibernate集合映射主要有以下几种:
<set name=”” order-by=”” inverse=”” lazy=”” cascade=””>
<key column=””/>
<one-to-many class=””/>
</set>
?
<list name=”” inverse=”” lazy=”” cascade=””>
<key-index column=””/>
<one-to-many class=””/>
</list>
?
<bag name=”” inverse=”” lazy=”” cascade=”” order-by=””>
<key column=””/>
<one-to-many class=””/>
</bag>
?
?
?? ?在上面的类图中,如果Header的set集合映射设置inverse=”true”,那么header.getLines().add(line)不会使任何变化持久化,只有正确的设置了line.setHeader(header)之后才会进行持久化。
Inverse=”true”提示Hibernate我们在两个映射文件中(父子类)中映射了同一个外键列两次,而只有另一侧(子类一侧)发生变化时才进行持久化操作。
?? ? cascade属性可以设置关系映射中的级联操作,hibernate的可选类型:save-update、delete、delete-orphan、all-delete-orphan等,其中delete-orphan、all-delete-orphan仅对one-to-many关系有效。以上面订单头、订单行为例,从header的lines集合中去除一个Line元素,即表明需要删除Line表中的改行,如果Line表不会被其他实体类引用,那么级联操作最好选择delete-orphan、all-delete-orphan都可以。
?