`
HelloSure
  • 浏览: 311636 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hibernate中不同状态对象间的转化及常用方法的区别

阅读更多
三种对象状态
(1)自由状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。
(2)持久化实例可以通过调用 delete()变成脱管状态。
通过get()或load()方法得到的实例都是持久化状态的。
(3)脱管状态的实例可以通过调用 update()、saveOrUpdate()、lock()或者replicate()进行持久化。

与SQL的对应
save()和persist()将会引发SQL的INSERT,
delete()会引发SQL的DELETE,
update()或merge()会引发SQL的UPDATE。
对持久化实例的修改在刷新提交的时候会被检测到,也会引起SQL的UPDATE
saveOrUpdate()或者replicate()会引发SQL的INSERT或者UPDATE

save 和update区别
save的作用是把一个新的对象保存
update是把一个脱管状态的对象保存

persist和save区别
save会立即执行Sql insert,不管是在transaction内部还是外部
persist在一个transaction外部被调用的时候并不触发一个Sql Insert

update和merge区别
当我们使用update的时候,执行完成后,我们提供的对象A的状态变成持久化状态
但当我们使用merge的时候,执行完成,我们提供的对象A还是脱管状态,hibernate或者new了一个B,或者检索到
一个持久对象B,并把我们提供的对象A的所有的值拷贝到这个B,执行完成后B是持久状态,而我们提供的A还是托管状态

flush和update区别
update操作的是在脱管状态的对象,
而flush是操作的在持久状态的对象。
默认情况下,一个持久状态的对象是不需要update的,只要你更改了对象的值,等待hibernate flush就自动保存到数据库了。
hibernate flush发生在几种情况下:
1,调用某些查询的时候
2,transaction commit的时候
3,手动调用flush的时候

lock和update区别
update是把一个已经更改过的脱管状态的对象变成持久状态
lock是把一个没有更改过的脱管状态的对象变成持久状态
对应更改一个记录的内容,两个的操作不同:
(1)update的操作步骤是:
更改脱管的对象->调用update
(2)lock的操作步骤是:
调用lock把对象从脱管状态变成持久状态-->更改持久状态的对象的内容-->等待flush或者手动flush

参考http://www.blogjava.net/dreamstone/archive/2007/07/29/133071.html
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate知识点总结

    在Hibernate中,ORM的核心思想是将关系数据库中的表记录转换为对象,从而使得开发人员可以直接操作对象而不是SQL语句。 - **元数据**:描述数据的数据,即关于数据的信息。在Hibernate中,元数据用于定义对象与...

    Hibernate 中文api文档下载.zip_API_Hibernate API _hibernate api

    Hibernate通过不同的方法管理对象的状态,如makeTransient()使对象变为瞬时态,saveOrUpdate()根据对象状态决定是保存还是更新,load()和get()分别用于按ID加载已持久化的对象。 总结,Hibernate中文API文档详尽地...

    Hibernate选择题(含答案).doc

    7. Hibernate中,对象的状态包括:暂时态、持久态、游离态和脱管态(会话态是不常用的术语,实际上指的是持久态)。其中,持久态对象与Session有关系,Session会缓存这些对象并负责其变化同步至数据库。 8. 持久态...

    hibernate中文参考文档

    1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java对象的技术,Hibernate作为ORM工具,可以实现Java对象与数据库表之间的自动转换,简化了数据库操作。 2. **配置文件**:Hibernate的配置文件(hibernate...

    Hibernate中文帮助文档

    Hibernate是一个开源的ORM框架,它允许Java开发者将对象模型转换为关系数据库模型,通过对象的方式来操作数据。这使得开发过程更为简洁,提高了代码的可读性和可维护性。其核心特性包括:持久化模型定义、查询语言...

    hibernate的jar包

    4. **Session接口**:在Hibernate中,Session是与数据库交互的主要接口,负责管理对象的状态,执行CRUD操作。 5. **Transaction管理**:Hibernate提供了事务管理功能,通过SessionFactory的openSession()方法创建...

    Hibernate的概述

    - **Hibernate映射文件(XML Mapping)**:用于定义Java对象与数据库表之间的映射关系,通过这种方式,Hibernate能够知道如何将Java对象转换为数据库中的记录,反之亦然。 #### 四、Hibernate的使用场景 - **B/S...

    Hibernate 中文手册 3.1.2.pdf

    由于 Hibernate 的高度可配置性,它允许开发者根据不同的需求来定制其行为,例如通过拦截器(Interceptors)来改变对象状态的持久化行为,通过监听器(Listeners)来响应持久化事件,以及通过过滤器(Filters)来对...

    Beginning Hibernate, 3rd Edition

    - **生命周期概念**:解释了实体对象在 Hibernate 中经历的不同状态,如瞬态、持久化、脱管状态等。 - **状态转换机制**:分析了在不同的操作(如保存、更新、删除)下实体状态的变化过程。 #### 六、映射概述 - *...

    hibernate面试题

    在Hibernate中,瞬时状态的对象不会被持久化到数据库中。 - **瞬时状态**:对象未与Session关联,且未保存到数据库。 - **持久状态**:对象与Session关联,并已保存到数据库。 - **托管状态**:对象与Session关联,...

    最新的hibernate3.6.0jar包

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程模型来操作数据库,从而简化了Java应用程序中的数据存取工作。在Java世界中,Hibernate 已经成为了开发人员处理数据库交互的标准...

    Hibernate完全参考手册

    为了提升Hibernate应用的性能,开发者需要关注查询优化、缓存利用、批处理操作、减少对象状态转换等方面。例如,合理使用fetch join避免N+1问题,控制缓存大小防止内存溢出,以及适时关闭Session以释放资源。 通过...

    hibernate资料

    理解Hibernate中实体对象的不同状态及其转换对于有效管理和控制数据至关重要。通过掌握`update()`、`saveOrUpdate()`和`merge()`等方法的使用,开发者可以更加灵活地处理各种场景下的数据更新需求。这些知识点不仅有...

    hibernate3常用相关包

    标题中的“hibernate3常用相关包”指出我们要讨论的是Hibernate3框架中常见的依赖库,这些库对于理解和使用Hibernate3至关重要。接下来,我们将逐一解析这些库的作用和它们在Hibernate3中的角色。 1. **dom4j-1.6.1...

    SSH之Hibernate总结

    本总结将围绕Hibernate的核心概念、配置、对象状态、关系映射及查询等方面进行详细阐述。 1. HelloWorld 在接触Hibernate时,我们通常会从一个简单的“HelloWorld”示例开始,这包括创建实体类、配置Hibernate、...

    hibernate_reference使用指南全

    Tuplizer 是 Hibernate 中用于将 ResultSet 转换为 Java 对象的组件,它提供了更多的灵活性和控制能力。 #### 七、基本的 ORM 映射 **5.1 映射声明** - **5.1.1 文档类型** Hibernate 映射文件遵循一定的文档...

    Hibernate Hibernate Hibernate

    12. **状态转换**:Hibernate对象有瞬时态、持久态、托管态和游离态四种状态,理解这些状态有助于更好地掌握对象在Hibernate中的生命周期。 13. **级联操作**:通过设置 cascade 属性,可以将操作(如保存、删除)...

    hibernate框架实例

    Hibernate将对象的状态分为瞬时态、持久态、游离态和删除态,根据不同的状态,Hibernate会采取不同的操作策略。 总结,通过这个"hibernate框架实例",你可以学习到如何在Java项目中使用Hibernate进行数据库操作,...

Global site tag (gtag.js) - Google Analytics