`
Atomic
  • 浏览: 9504 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Hibernate 父子关系映射实例

    博客分类:
  • java
阅读更多

从Hibernate的reference中摘抄了几个父子关系映射的实例以及Bag,Set等的实例,贴出来做个记号

一个一个来看一下Hibernate里面提供的几种集合映射的特点以及例子:

  • Set节点:A persistent wrapper for a java.util.Set. The underlying collection is a HashSet,直接包装了java的Set类型,Set的特点的话,jdk的文档是这样说的:
一个不包含重复元素的 collection。更正式地说,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素

 

 总结:如果没有使用"sort"属性,则默认使用的是类似于java.util.HashSet的无序的,不允许重复的

 

 

/**
 * 顾客
 * @author Atomic
 */
public class Customer implements Serializable {

	public Customer() {
	}

	Set orders;//顾客所有的订单,这里声明类型一定要是接口,而不能直接声明层HashSet这种具体类型

	public Set getOrders() {
		return orders;
	}

	public void setOrders(Set orders) {
		this.orders = orders;
	}


}

 

对应的映射代码:

<!-- 
	name:对应的Java属性名
	inverse:将控制端交给"多"的一方
	sort:指定了的话就可以进行排序,默认值是unsorted,即不排,也可以指定自己的实现了Comparetor的排序器
	where:对应的过滤条件将会被附加到sql上
	
	key:描述关系中的外键
		column:对应的表中的外键
		not-null:是否有非空约束
	
	one-to-many:一对多关系映射到的类
	 -->
<set name="orders" inverse="true" sort="unsorted" where="customerId='Atomic'">
	<key column="customerId" not-null="true" />
	<one-to-many class="epet.test.Order"/>
</set>

 

  •  Array节点:A persistent wrapper for an array. Lazy initialization is NOT supported. Use of Hibernate arrays is not really recommended

    总结:Array节点直接包装了"数组"这个类型,访问效率应该最高,但是不支持延迟加载,项目中没有映射过,不知道效果如何?

 

  • Bag节点:An unordered, unkeyed collection that can contain the same element multiple times,无序的,允许重复元素的类型
		<!-- 使用bag的话可以直接映射成List -->
		<bag name="orders" inverse="true">
			<key column="customerId" not-null="true"/>
			<one-to-many class="com.gxaccp.epet.test.Order"/>
		</bag>

 

 

  • IdBag节点:An IdentifierBag implements "bag" semantics more efficiently than a regular Bag by adding a synthetic identifier column to the  table,idbag比bag更加高效,因为他使用了标示符来提高效率,而这个标示符是不用用户干预的

 

		<!-- 
			collection-id:做为关联表用来标示每一行
				generator:生成器,可以使用uuid
			其余的和普通的manyToMany是一样的
		 -->
		<idbag name="roles">
			<collection-id type="string" column="id">
				<generator class="uuid.hex"/>
			</collection-id>
			<key column="customerId" not-null="true"/>
			<many-to-many class="com.gxaccp.epet.test.Role" column="roleId"/>
		</idbag>

 

  • List节点: A persistent wrapper for a java.util.List. Underlying collection is an ArrayList.list直接包装了java里的ArrayList,当然,也就有所有List的特点:线性有序的,也可以出现重复元素
		<!-- 
			list-index:指定list中的项的排序索引
				base:索引从多少开始
			composite-element:直接将订单项配进来而不使用额外的class节点
		 -->		
		<list name="lineItems" inverse="true">
			<key column="orderId"/>
			<list-index column="line_number" base="0"/>
			<composite-element class="OrderLineItem">
				<property name="quantity"/>
				<many-to-one name="product" class="com.gxaccp.epet.test.Product" column="productId"/>
			</composite-element>
		</list>

 

  • Map节点: A persistent wrapper for a java.util.Map. Underlying collection is a HashMap.map直接包装了java里的HashMap,当然,如果指定了sort也可以切换成其他的类型:无序的,键值对的
分享到:
评论

相关推荐

    spring+hibernate代码实例集

    1.1 父子关系映射:在数据库中,表与表之间可能存在一对多、多对一或者一对一的关系。通过Hibernate的注解或XML配置,我们可以定义实体类之间的关联。Spring则可以协助管理这些关联对象,例如通过@Autowired注解自动...

    hibernate中文参考文档

    16. 示例:父子关系:文档中会包含一个关于如何处理父子关系映射的例子,这是对象模型中常见的关系映射挑战。 17. 示例:Weblog应用程序:这部分将通过一个Weblog应用程序的例子来展示如何使用Hibernate进行数据库...

    hibernate 一对多映射

    本文将深入探讨 Hibernate 的简单搭建以及其中的一对多映射关系。 ## Hibernate 搭建 1. **环境配置**:首先,你需要在项目中引入Hibernate的依赖库,这通常通过Maven或Gradle来完成。添加相应的依赖项到pom.xml或...

    Hibernate框架参考文档

    本压缩软件集中了大量的Hibernate资料,目录如下: 1. Hibernate入门;...21. 示例:父子关系(Parent Child Relationships); 22. 示例:Weblog 应用程序; 23. 示例:复杂映射实例; 24. 最佳实践(Best Practices);

    java私塾独家首发最新Hibernate4教程

    - **父子关系映射**:表示实体之间的层次结构。 - **复杂映射**:处理复杂的数据关系。 **3.2 JavaEE事务管理** - **事务产生的动机**:保证数据的一致性和完整性。 - **事务模型**:本地事务与分布式事务的区别。...

    Hibernate+中文文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    hibernate3.2中文文档(chm格式)

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    HibernateAPI中文版.chm

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate原理简介的Java项目

    Hibernate支持各种复杂的关联关系,如实体之间的父子关系、引用关系等。这些关系通过注解或XML配置来定义。 10. **懒加载和立即加载** Hibernate提供了懒加载机制,只有当实际需要时才会加载关联的对象,从而避免...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期中可处于...

    Hibernate中文详细学习文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    最全Hibernate 参考文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and ...

    Hibernate 中文 html 帮助文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate教程

    22. 示例:父子关系(Parent Child Relationships) 22.1. 关于collections需要注意的一点 22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值...

    hibernate 体系结构与配置 参考文档(html)

    7. 关联关系映射 7.1. 介绍 7.2. 单向关联(Unidirectional associations) 7.2.1. 多对一(many to one) 7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联...

    Hibernate面试题

    在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,被广泛应用于数据库操作。掌握Hibernate技术,不仅能够提高开发效率,还能为项目带来更好的可维护性。这里我们将深入探讨一系列常见的...

    hibernate 教程

    示例:父子关系(Parent Child Relationships) 16.1. 关于collections 16.2. 双向的一对多关系(Bidirectional one-to-many) 16.3. 级联生命周期(Cascading lifecycle) 16.4. 级联更新(Using ...

    精通Hibernate:对象持久化技术第二版part3

    7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期中可处于...

Global site tag (gtag.js) - Google Analytics