`
roc08
  • 浏览: 228044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate对象管理机制

阅读更多
在hibernate中对象有三种状态:瞬时态或自由态(transient)、持久化态(persistent)、托管态或游离态(detached)
(1).三态简介:
◆transient:瞬态或者自由态   (例如new Person("张三")
1.该po通过new等方式创建
2.该po的实例和session没有关联,不在session中缓存
3.该po在数据库中没有对应的记录

◆persistent:持久化状态  例如通过get和load等得到的对象
1.该po通过get、load等方法从数据库中取出并转化成对象
2.该po与session中的实例关联,在session中缓存
3.该po在数据库中有对应的记录

◆detached:脱管状态或者游离态
1.该po通过session的close、clear或者evict(obj)方法从持久态变化得到
2.该po的实例和session没有关联,不在session中缓存
3.该po在数据库中有对应的记录(前提是没有其他session删除此记录)
4.通过delete(obj)但不能执行事务(在一个事务中),也可以得到游离态的po,因delete而变成游离态可以通过save或saveOrUpdate()变成持久态。

(2)hibernate常用方法简介
◆update方法
  1.操作的对象:自由态或脱管状态(因session的关闭而处于脱管状态)的对象
  2.作用:将对象变为持久态(更新到数据库中)
  3.触发方式:手动调用

◆flush方法
  1.操作的对象:持久态对象(po)
  2.作用:将对象更新到数据库中
  3.触发方式:
     a.手动调用
     b.session的关闭、SessionFactory关闭,自动调用
     c.get()一个对象,把对象的属性进行改变,把资源关闭,自动调用
     d.transaction commit的时候,自动调用
     e.transaction commit的时候,自动调用

◆lock方法
  1.操作的对象:没有更改过的脱管状态的对象(针对的是因Session的关闭而处于脱管状态的po对象,不能针对因delete而处于脱管状态的po对象)
  2.作用:将对象变为持久化状态,等待flush方法将其更新到数据库
  3.触发方式:手动调用

◆clear方法
  1.操作的对象:session缓存
  2.作用:完整的清除session缓存
  3.触发方式:手动调用

◆evcit(obj)方法
  1.操作的对象:某个持久化对象
  2.作用:把某个持久化对象从session的缓存中清空
  3.触发方式:手动调用


注意:在实际业务中经常需要从数据库取到一个对象,并将其进行处理,编码或解码某些属性进行其他操作,这时如果对象处于持久态,会在session关闭时同步到数据库中,而我们不想更改数据库中数据的状态,这时有两个方法解决:
1.new一个自由态的对象,拷贝原对象的属性(主键id)除外,使用new处理的新对象进行操作。
2.将对象从session中清空(evict(obj)方法),使其变为detached托管态,再进行操作。
分享到:
评论

相关推荐

    hibernate事务管理机制.doc

    【hibernate事务管理机制】是指在使用Hibernate框架进行数据库操作时,如何管理和协调事务的一系列规则和策略。事务管理是确保数据一致性、完整性和并发控制的重要机制。 **悲观锁**是预防性的锁定策略,它假设并发...

    Hibernate 对象的三种状态和特点

    以下是Hibernate对象的三种主要状态及其特点: 1) 临时状态(Transient State): 当通过`new`关键字创建一个新的对象时,该对象处于临时状态。在这个状态下,对象并未与任何Session关联,因此它的变化不会自动反映...

    hibernate的缓存机制和session对象的产生方式案例

    在Java的持久化框架Hibernate中,缓存机制和Session对象的管理是其高效运作的关键要素。本文将深入探讨这两个主题,以帮助开发者更好地理解和利用Hibernate。 首先,让我们聚焦于Hibernate的缓存机制。缓存的存在是...

    HIBERNATE的缓存机制

    Hibernate缓存机制是提高应用程序性能的关键特性,尤其是在频繁与数据库交互的应用中。缓存通过减少对物理数据库的直接访问次数,显著提升了数据读取和写入的速度。这主要是因为从缓存中读取数据比从数据库中获取更...

    Java 精通Hibernate对象持久化技术权威指南

    《Java精通Hibernate对象持久化技术权威指南》是一本深度探讨Java开发中如何高效地使用Hibernate进行对象持久化的专业书籍。本书旨在帮助Java开发者熟练掌握Hibernate框架,实现数据库操作的简化和自动化,提升软件...

    Hibernate中,利用版本管理机制来控制事务并发

    在Java的持久化框架Hibernate中,版本管理机制是实现事务并发控制的重要手段。它通过维护对象的版本信息,确保在多线程环境下数据的一致性和完整性。本文将深入探讨Hibernate中的版本管理机制及其在控制事务并发中的...

    Hibernate 操纵持久化对象

    总结,Hibernate操纵持久化对象涉及多个方面,包括对象状态管理、事务处理、查询机制、缓存策略以及关系映射等。熟练掌握这些概念和操作,将极大地提高开发效率,并有助于构建高效、稳定的数据库应用程序。通过实践...

    Hibernate 对象持久化

    **Hibernate对象持久化** 在Java开发中,数据库操作是不可或缺的一部分。Hibernate作为一种强大的ORM(对象关系映射)框架,极大地简化了Java应用与数据库之间的交互。它通过将Java类映射到数据库表,实现了对象...

    精通Hibernate:Java对象持久化详解.zip

    Hibernate通过提供一种对象-关系映射机制,使得Java对象可以直接与数据库表进行交互,而无需编写大量的SQL语句。这种映射机制使得开发过程更加面向对象,提高了代码的可读性和可维护性。 本书的核心内容可能包括...

    精通Hibernate:Java对象持久化技术详解.pdf

    最后,书中会探讨如何在实际项目中集成和优化Hibernate,包括事务管理、性能调优、问题排查等实战技巧。这有助于开发者在实际开发过程中更好地应用Hibernate,提升项目的稳定性和效率。 总的来说,《精通Hibernate...

    Hibernate的缓存机制

    Hibernate 是一个流行的 Java 框架,用于简化对象关系映射(ORM)处理,它提供了一种高效的数据缓存机制,以提高应用程序的性能。本文将深入探讨 Hibernate 的缓存机制,包括其两个级别——一级缓存和二级缓存,并...

    精通Hibernate:Java对象持久化技术详解

    2. **Session接口**:它是Hibernate的主要工作接口,负责对象的加载、保存、更新和删除等操作,提供了事务管理和缓存机制。 3. **Criteria查询**:提供了一种动态构建SQL查询的方式,无需编写硬编码的SQL语句,增强...

    springmvc+hibernate后台管理系统

    此外,Hibernate支持事务管理、缓存机制和实体生命周期管理,确保了数据的一致性和高性能。 在这个后台管理系统中,EasyUI作为前端框架,提供了丰富的组件和精美的界面设计,使得开发者可以快速构建出响应式、用户...

    struts2+hibernate3.3图书管理系统

    Hibernate则通过ORM机制,将Java对象和数据库表进行对应,简化了数据库操作的复杂性。 通过学习这个项目,你可以了解到如何整合Struts2和Hibernate,以及如何设计和实现一个简单的Web应用。它涵盖了配置文件的设置...

    精通Hibernate:java对象持久化技术

    【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...

    Hibernate Service Register机制初体验

    Hibernate的核心在于其强大的对象关系映射(ORM)能力,而Service Register机制则是Hibernate框架中不可或缺的一部分。这篇文章将带你深入理解Hibernate Service Register的工作原理和应用场景。 **一、Hibernate ...

    hibernate操纵实体对象

    6. **事务管理(Transaction Management)**:在Hibernate中,通常使用`Session`的`beginTransaction()`, `commit()`和`rollback()`方法来管理事务。事务边界内的一系列操作要么全部成功,要么全部失败,确保数据...

Global site tag (gtag.js) - Google Analytics