`
long2010
  • 浏览: 56422 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

转:hibernate之传播性持久化(把级联应用到关联)

阅读更多

hibernate之传播性持久化(把级联应用到关联)


hibernate允许你给每个关联映射指定一种级联样式,它为所有的状态转变提供了更多灵活和更细粒度的控制。
hibernate读取被声明的样式,并自动把操作级联到被关联的对象。在xml映射元数据中,把cascade="..."属性放
在<one-to-one>或者<many-to-one>映射元素中,来启用传播状态变化。所有的集合映射(<set>,<bag>,<
list>,<map>)都支持cascade属性。然而,delete-orphan设置只适用于集合。很显然,你永远不必给引用值类
型类的集合启用传播性持久化---这里被关联对象的生命周期是依赖和隐式的。依赖型生命周期的细粒度控制只与实
体之间的关联相关。

XML属性            注解

-------            --------

None               (默认)Hibernate忽略关联

save-update        org.hibernate.annotations.CascadeType.SAVE_UPDATE

                   当Session被清除,且对象被传递到save()或者update()时,Hibernate就导航关联,
并保存刚刚被实例化的瞬时实例和把变化持久化到脱管状态的实例。

persist            javax.persistence.CascadeType.PERSIST

                   当对象传递到persist()时,hibernate使任何被关联的瞬时实例都变成持久化。如果
使用原生的Hibernate,级联则只在调用时发生。如果使用EntityManager模块,这项操作则在持久化上下文
清除时被级联。

merge              javax.persistence.CascadeType.MERGE

                   Hibernate导航关联,并在对象传递到merge()时,通过相当的持久化实例合并被关
联的脱管实例。可到达的瞬时实例被变成持久化。

delete             org.hibernate.annotations.CascadeType.DELETE

                   当对象被传递到delete()或者remove()时,Hibernate就导航关联,并删除被关联的
持久化实例。

remove             javax.persistence.CascadeType.REMOVE         

                   当对象被传递到remove或者delete()时,这个选项就把级联删除启用到被关联的持
久化实例。

lock              org.hibernate.annotations.CascadeType.LOCK

                   这个选项把lock操作级联到被关联的实例,如果对象是脱管的,就把它们重附到持
久化上下文。注意LockMode没有被级联:Hibernate假设你在被关联对象上不想要悲观锁---例如,因为根
对象上的悲观锁已经足以避免并发修改。

replicate          org.hibernate.annotations.CascadeType.REPLICATE

                   hibernate导航该关联,并把replicate()操作级联到被关联的对象

evict              org.hibernate.annotations.CascadeType.EVICT

                   当对象被传递到hibernate Session中的evict()时,hibernate从持久化上下文清
除被关联的对象

refresh            javax.persistence.CascadeType.REFRESH

                   当对象被传递到refresh()时,hibernate从数据库中重新读取被关联对象的状态。

all                javax.persistence.CascadeType.ALL

                   这项设置包括并启用前面列出的所有级联选项。

deleteorphan       org.hibernate.annotations.CascadeType.DELETE_ORPHAN

                   当被关联的对象从关联(即集合中)被移除时,这项额外的特殊设置启用了它们的删
除。如果你在一个实体集合中启用这项设置,就等于告诉hibernate:被关联的对象没有共享的引用,且当
引用从集合中被移除时,它可以被安全地删除

----------                  

注意:几个级联可以以逗号分隔的列表应用到特定的关联。还要注意:delete-orphan没有包括在all中。

原文:http://blog.csdn.net/fhd001/archive/2010/10/12/5934703.aspx

 

分享到:
评论

相关推荐

    Hibernate的级联操作(增,删,该)

    当我们对一个实体对象进行操作时,可以设置级联属性,让这些操作自动传播到与之相关联的其他对象,从而减少代码的冗余和复杂性。接下来,我们将详细探讨Hibernate的级联操作,包括增、删、改这三种主要操作。 1. ...

    Hibernate 一对多、多对一、级联、加载、反转

    在Java持久化框架Hibernate中,一对多(One-to-Many)、多对一(Many-to-One)、级联(Cascading)、加载(Loading)和反转(Inversing)是关系映射的重要概念,它们对于理解如何在数据库和对象之间有效地管理关联至...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    在实际开发过程中,为了简化数据持久化的处理逻辑,Hibernate引入了级联操作和控制权反转两个概念。 ### 一、级联操作(Cascade) #### 1.1 级联操作简介 级联操作是Hibernate提供的一种用于简化关联对象管理的...

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

    10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit of work) 11.1.2. 长对话 11.1.3. 关注对象标识...

    Hibernate实战(第2版 中文高清版)

     12.1.2 把级联应用到关联   12.1.3 使用传播性状态   12.1.4 利用JPA的传播性关联   12.2 大批量和批量操作   12.2.1 使用HQL和JPA QL的大批量语句   12.2.2 利用批量处理   12.2.3 使用无状态的会话...

    hibernate3.2中文开发手册

    7. **级联操作与缓存策略**:理解级联操作(cascade)的概念,它可以将操作传播到关联的对象上。同时,Hibernate提供了不同级别的缓存策略,包括第一级缓存和第二级缓存,以及查询缓存。 8. **性能优化**:手册会...

    hibernate笔记

    2. **持久化类(Persistent Class)**: 实体类就是持久化类,它们包含持久化属性(由字段或属性表示)和持久化行为(由方法表示)。 3. **ID(标识符)**: 每个实体都有一个唯一的ID,对应数据库中的主键。通常使用...

    hibernate3学习源码

    【hibernate3学习源码】是一个针对关系型数据库对象持久化的开源框架,它简化了Java应用程序与数据库之间的交互。本资源包含多个示例,涵盖了Hibernate中的四种主要关联关系:一对一(OneToOne)、一对多(OneToMany...

    Hibernate中cascade和inverse应用

    在 Hibernate 框架中,`cascade` 和 `inverse` 是两个重要的概念,它们主要用于管理对象之间的持久化关系,特别是涉及到一对一(one-to-one)、一对多(one-to-many)和多对多(many-to-many)关系时。这两个属性都...

    struts2、hibernate、spring学习总结文档

    Struts2、Hibernate和Spring是Java开发中三个重要的框架,它们分别用于构建MVC应用程序、对象持久化管理和依赖注入及面向切面编程。下面将详细解释这三个框架的主要知识点。 Struts2篇: 1. MVC模式:Model-View-...

    hibernate 3英文API

    Hibernate 3 是一款著名的对象关系映射(ORM)框架...通过深入阅读和研究这些API,开发者能够掌握Hibernate 3的高级特性,如级联操作、延迟加载、关联映射、事件监听器等,从而提升数据库操作的效率和代码的可维护性。

    hibernate 中文帮助文档 api

    - **持久化类(Persistent Class)**:实现了Hibernate特定接口或具有特定注解的Java类,这些类的实例可以被Hibernate持久化到数据库。 - **会话(Session)**:是Hibernate的主要工作单元,用于执行CRUD操作,...

    \hihernate开发所需包

    9. **级联操作**:在Hibernate中,可以通过级联属性定义实体间操作的传播行为,例如保存一个父对象时,是否同时保存所有子对象。 10. **缓存机制**:Hibernate有第一级缓存(Session级别的)和第二级缓存...

    hibernate一对多关联映射

    在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系数据库模型,它用于表示一个实体(类)可以与多个其他实体实例相关联的情况。本文将深入探讨Hibernate中的一对多关联映射,以及如何实现双向关联。 ...

    hibernateDemo.zip

    5. **持久化(Persistence)**:Hibernate提供了Session接口,它是数据库操作的主要接口,负责对象的保存、更新、删除和查询等操作。 6. **HQL(Hibernate Query Language)**:类似于SQL的面向对象查询语言,用于...

    hibernate最全的例子

    - **Session(会话)**: Hibernate 中用于与数据库交互的接口,负责对象的持久化操作,如保存、更新、删除和检索。 - **SessionFactory(会话工厂)**: 创建 Session 的工厂类,负责配置信息和数据库的连接。 - *...

    hibernate 详解

    Hibernate 是Java平台上的一个持久化框架,它通过XML配置文件或注解将Java对象映射到关系数据库表,实现了数据的透明访问。这使得开发人员可以专注于业务逻辑,而不必过多地关注SQL的编写。 2. Hibernate 的核心...

    更新关联表的值

    2. **关联管理**:Hibernate提供了多种策略来管理关联,比如`CascadeType.ALL`会将操作(如保存、删除、更新)从父实体传播到子实体,`FetchType.LAZY`或`EAGER`控制关联的加载时机。 3. **对象状态**:理解...

    Hibernate教程

    11.11. 传播性持久化(transitive persistence) 11.12. 使用元数据 12. 事务和并发 12.1. Session和事务范围(transaction scopes) 12.1.1. 操作单元(Unit of work) 12.1.2. 应用程序事务(Application ...

    hibernate annotation 中文文档

    - **2.2.5.4 用 cascading 实现传播性持久化**:通过 `@Cascade` 注解设置关联关系中的级联操作,例如级联保存或删除。 - **2.2.5.5 关联关系获取**:可以通过 `@Fetch` 注解来优化关联关系的加载策略,提高查询...

Global site tag (gtag.js) - Google Analytics