知识点:
【
集合映射(set, list, array,bag, map)
<set name=”employees” >
<key column=”depart_id”/>
<one-to-many class=”Employee”/>
<!-- <element type="string" column="name"/> -->
<!--
<composite-element class=”YourClass”>
<property name=”prop1”/>
<property name=”prop2”/>
</composite>
-->
</set>
集合映射(set, list, array,bag, map)
Set:不可重复、没有顺序
List:可重复、有顺序
<list name=”employees” >
<key column=”depart_id”/>
<!—表中有单独的整型列表示list-index 记录插入数据的数据
<list-index column=”order_column”/>
<one-to-many class=”Employee”/>
</list>
<array name=”employees” >
<key column=”depart_id”/>
<!—表中有单独的整型列表示list-index
<list-index column=”order_column”/>
<one-to-many class=”Employee”/>
</array>
集合映射(set, list, array,bag, map)
Bag:必须使用List于之对应但没有顺序了
<bag name="employees " order-by="id desc">
<key column=”depart_id”/>
<one-to-many class=”Employee”/>
</bag>
<map name="employees ">
<key column=”depart_id”/>
<map-key type="string" column="name"/>
<one-to-many class=”Employee”/>
</map>
集合映射(set, list, array,bag, map)
这些集合类都是Hibernate实现的类和JAVA中的集合类不完全一样,set,list,map分别和JAVA中的Set,List,Map接口对应,bag映射成JAVA的List;这些集合的使用和JAVA集合中对应的接口基本一致;在JAVA的实体类中集合只能定义成接口不能定义成具体类, 因为集合会在运行时被替换成Hibernate的实现。
集合的简单使用原则:大部分情况下用set,需要保证集合中的顺序用list,想用java.util.List又不需要保证顺序用bag。
级联和控制翻转
cascade和inverse (Employee – Department)
Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:
none,all,save-update ,delete, lock,refresh,evict,replicate,persist,
merge,delete-orphan(one-to-many) 。一般对many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。
inverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库表的影响),在one-to-many和many-to-many的集合定义中使用,inverse=”true”表示该对象不维护关联关系;该属性的值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。
one-to-many维护关联关系就是更新外键。many-to-many维护关联关系就是在中间表增减记录。
注: 配置成one-to-one的对象不维护关联关系
】
注意:在使用结合映射的时候我们在java代码中不能使用集合的实现类去编写代码 而是使用集合 因为hibernate在将数据映射到表中的时候会对我们编写的集合进行改写 hibernate重写了jdk中的所有集合而这些重写的集合了于jdk中的集合实现类没有任何继承关系 所有如果直接使用jdk中的实现类去编写代码在映射到表示会发生类型转换异常
分享到:
相关推荐
在Hibernate中,级联操作可以通过`cascade`属性进行配置。主要有以下几种级联类型: 1. `save-update`:当保存或更新父实体时,会自动保存或更新所有关联的子实体。 2. `merge`:在调用`session.merge()`时,不仅...
在Hibernate中,这种关系可以通过配置XML映射文件或使用注解来实现。我们将以XML映射为例,探讨如何设置一对多关联,并进行级联添加操作。 首先,我们需要定义实体类。"Department"代表部门,"Employee"代表员工。...
总的来说,`hibernate-jpa-2.1-api-1.0.0.final.jar`为开发者提供了丰富的JPA 2.1特性的实现,使得在Java项目中使用Hibernate进行数据库操作变得更加便捷和标准化。通过深入理解和熟练运用这个API,我们可以构建出...
本篇将深入探讨如何在Spring和Hibernate中实现多对多关联映射,并通过一个具体的教师与学生表的级联增删改查实例来阐述这一过程。 首先,多对多关联是数据库设计中的一种关系类型,表示一个实体可以与多个其他实体...
内部为四级的级联下拉框,分别为省份,市,县及区和镇及街道四级下拉框;(适用任何语言的纯HTML)详细截图可访问:https://blog.csdn.net/weixin_43972758/article/details/86510419 进行查询。
### Hibernate基础之关联映射与级联操作 ...以上是关于Hibernate中关联映射和级联操作的基础知识概述,掌握了这些内容后,开发者能够在实际项目中更加灵活高效地使用Hibernate进行数据持久化操作。
在Hibernate中,级联操作(Cascading Operations)是一种高级特性,它使得对象之间的关联关系在数据库层面得以同步更新。当我们对一个实体对象进行操作时,可以设置级联属性,让这些操作自动传播到与之相关联的其他...
《电子政务-主机控制的电磁翻转式级联除尘系统》 电子政务是现代信息技术与政府管理相结合的产物,旨在提升公共服务效率、增强政府透明度和公众参与度。在这个领域,主机控制的电磁翻转式级联除尘系统扮演着至关...
在Java的持久化框架Hibernate中,关系映射是数据库对象之间的关联方式,它允许我们将复杂的数据库结构映射到Java对象上。"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联...
通过具体的代码示例和XML配置文件,帮助读者理解如何在Hibernate中正确地配置这些集合类型,从而实现更高效的数据访问和持久化操作。 #### POJOs定义 为了更好地解释集合映射的概念,我们首先定义两个实体类:`...
9. **懒加载与级联操作**:源码中会揭示Hibernate如何实现懒加载策略,以及如何通过级联操作影响关联实体的持久化行为。 10. **性能优化**:通过对源码的学习,我们可以了解Hibernate是如何进行缓存管理、批处理和...
在Hibernate中,CGLIB被用于动态生成持久化类的代理对象,当我们的实体类没有实现任何接口时,Hibernate就会选择使用CGLIB来生成代理,以便实现透明化的懒加载和级联操作。 在“hibernate-cglib-repack-2.1_3.jar”...
标题中的“电子政务-主机网络控制的多片级联太阳能电池板除尘系统”指的是一个集成在电子政务系统中的,利用主机网络控制技术实现对多片级联太阳能电池板进行自动或远程除尘的智能系统。这样的系统旨在提高太阳能...
5. 环境监测与治理:在环保领域的电子政务应用中,如污水处理、空气污染监测等,电拖动装置配合精密控制单元可实现精确的设备操作,有助于提高环境治理的精度和效率。 6. 智能交通系统:在智能交通管理中,信号灯...
标题中的“esayui-全国城市省市区三级级联”是指一个使用EasyUI和jQuery库开发的前端组件,主要用于实现中国地区(省、市、区)的三级联动选择功能。EasyUI是一个基于jQuery的轻量级JavaScript框架,它提供了一系列...
Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。然而,为了满足更复杂的业务需求,Hibernate还提供了丰富的扩展功能,这就是我们今天要讨论的Hibernate-Extensions。这个...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库。本文将深入探讨Hibernate5中的映射关系,主要包括多对多(Many-to-Many)和一对多(One-to-Many)...