Hibernate集合映射
Hibernate集合映射主要有以下几种:
-
set:对应的POJO属性类型为Set,使用HashSet进行初始化。不保存元素的顺序,并且不允许重复元素。set也可以映射SortedSet,且sort属性可以设置成比较器或者用于内存排列的自然顺序。使用TreeSet进行初始化。
<set name=”” order-by=”” inverse=”” lazy=””
cascade=””>
<key column=””/>
<one-to-many class=””/>
</set>
|
-
list:对应的POJO属性类型为List,使用ArrayList进行初始化。在集合表(子表)中需要一个额外的索引列保存每个元素在List中的位置。索引可以配置从其它数值开始(默认从0开始<list-index base=”1”…/>),且数据库索引字段必须是连续的,否则hibernate会将null值加入集合中。
<list name=”” inverse=”” lazy=”” cascade=””>
<key-index column=””/>
<one-to-many class=””/>
</list>
|
-
bag/idbag:对应的POJO属性类型为Collection(也可以是List但不提倡),使用ArrayLis进行初始化。
<bag name=”” inverse=”” lazy=”” cascade=””
order-by=””>
<key column=””/>
<one-to-many class=””/>
</bag>
|
-
map:对应的POJO属性类型是Map,保持键值对,使用HashMap进行初始化。也可以映射SortedMap,且sort属性可以设置为比较器或者用于内存排序的自然顺序,使用TreeMap进行初始化。
-
array:很少使用。
在上述集合中bag、list是不能被排序的(通过sort属性设置比较器或自然顺序,Collection、List并未实现Comparable接口;list的顺序由索引决定。);set、map可以通过映射成SortedSet或TreeMap(两者都实现了Comparable接口),然后通过sort属性进行排序。但是bag、set、map可以通过order-by属性进行数据库级别的排序,hibernate按照排序后的顺序装入Collection或Set中。set、map仅限于jdk1.4以上版本,这是因为hibernate内部通过LinkedHashSet、LinkedHashMap完成set、map映射,更早的jdk中没有这两个类。
在父子双向管理映射中,我们一般在父表的集合关系映射中(set、bag、list、map)指定inverse=”true”,这显示的告诉Hibernate链接的哪一端不应该与数据库同步。在下面的例子中将把Line端所做的变化持久化到数据库,忽略仅对lines集合所做的变化。
在上面的类图中,如果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都可以。
- 大小: 17.3 KB
分享到:
相关推荐
student与Score的Map集合关系 student与class的多对一 一对多映射
hibernate集合映射inverse和cascade详解.txt
NULL 博文链接:https://wintys.iteye.com/blog/426022
介绍的很详细,个人觉得不错!!!
hibernate集合的映射 集合的映射 set list array map
适合初学者了解在hibernate中配置set,list,map,bag等集合映射
NULL 博文链接:https://lijunabc.iteye.com/blog/443381
Hibernate映射集合属性List,用于映射集合属性 List Hibernate 自动生成表 不需sql
NULL 博文链接:https://lijunabc.iteye.com/blog/443278
Hibernate常见集合映射(Set,List_Array,Map,Bag)
JAVA培训-HIBERNATE的集合映射.doc
Hibernate关系映射 Hibernate主键策略与属性 Hibernate集合映射
NULL 博文链接:https://lijunabc.iteye.com/blog/443353
hibernate中的集合映射,各种集合类型的使用方法及适用场景
NULL 博文链接:https://lijunabc.iteye.com/blog/443305
第12章 基于annotation注解技术的ssh 2整合开发 12.1 初识annotation522 12.2 亲身体验annotation的威力524 ...12.4.12 hibernate集合映射的annotation注解实现552 12.5 基于annotation的ssh 2整合开发554 12.6 小结563
2,建立表的hibernate支持,生成tb_user类和对应的配置文件 3,修改配置文件使之和相应的类对应, 4,修改tb_user类,创建一个set类型的字段emailes,生成它的set和get方法 5,写测试类,对以上内容进行测试。 二、...