- 浏览: 137123 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Hibernate框架中为持久化的对象设计了三种状态,处于这三种状态的对象通过一定的操作对象状态可以发生相互转化:
transient--瞬时态:通过new关键字创建的实体对象或尚未与Hibernate Session关联的对象,失去引用的话,就会被Java虚拟机回收。
persistent--持久态:通过get/load、Query查询获得或已经与当前Hibernate Session产生关联,并且相关联的session没有关闭,且事务尚未提交。
detached--脱管态:无法直接获得;存在持久化OID,但没有与当前Hibernate Session关联,hibernate不能检测到脱管状态改变
如下代码所示:
持久化对象之间的状态转换:
持久化对象之间的转变:
transient--瞬时态:通过new关键字创建的实体对象或尚未与Hibernate Session关联的对象,失去引用的话,就会被Java虚拟机回收。
persistent--持久态:通过get/load、Query查询获得或已经与当前Hibernate Session产生关联,并且相关联的session没有关闭,且事务尚未提交。
detached--脱管态:无法直接获得;存在持久化OID,但没有与当前Hibernate Session关联,hibernate不能检测到脱管状态改变
如下代码所示:
Session session = HibernateUtils.openSession(); // 开启事务 Transaction transaction = session.beginTransaction(); Dog dog = new Dog (); // 瞬时态(没有OID,未与Session关联) dog .setName("小狗狗"); dog .setAge(1); session.save(dog );// 持久态(具有OID,与Session关联) // 提交事务,关闭Session transaction.commit(); session.close(); System.out.println(dog .getId()); // 脱管态(具有 OID,与Session断开关联)
持久化对象之间的状态转换:
持久化对象之间的转变:
- 瞬时——持久:save、saveOrUpdate
- 瞬时——脱管:对象.setID(1);为瞬时对象设置新的OID
- 持久——瞬时:delete(被删除持久化对象,不建议再次使用)
- 持久——脱管:evict(清除一级缓存中某个对象)、close(关闭Session,清除一级缓存)、clear(清除一级缓存所有对象)
- 脱管——瞬时:对象.setID(null);删除对象OID
- 脱管——持久:update、saveOrUpdate、lock
发表评论
-
Threadlocals and memory leaks in J2EE
2020-03-03 01:10 259Threadlocals are used in J2EE a ... -
Mybatis Plus 高级用法
2019-12-09 16:01 957以下文章记录 ... -
Rabbitmq心跳机制与配置
2019-09-19 17:02 1624Rabbitmq 心跳机制与配置 默认情况下,在3.5 ... -
RabbitMQ调优系列2 为大量连接进行调整
2019-06-23 22:29 1154RabbitMQ调优系列2 为大量连接进行调整 Some ... -
RabbitMQ调优系列1 调整I/O线程线程池
2019-06-23 22:03 1071RabbitMQ调优系列1 调整I/O线程线程池 Er ... -
MySQLSQL优化最佳实践和建议
2019-03-24 22:57 657总结一下项目中经常使用的MySQL SQL优化最佳实践 1. ... -
Git 常见用法记录
2019-02-23 22:04 442记录Git常见用法 ... -
JPA规范 AccessType.PROPERTY与AccessType.FIELD的区别
2018-08-06 20:30 848AccessType 来自JPA规范中EJB部分,该部分规范 ... -
Square Cube 系统注意事项
2015-07-29 15:06 868Cube是一个采集基于时间的事件数据并时行度量分析的系 ... -
Java Web- Changes Between SOAP 1.1 and SOAP 1.2
2015-05-25 15:43 809SOAP Version 1.2 has a number o ... -
术语-揭开Socket
2013-09-27 11:37 929好文转自:http://www.cnblogs.com/goo ... -
术语-Frontend 与 backend
2013-09-16 10:20 1222Front-end and back-end are term ... -
存储技术摘录—iSCSI
2013-08-26 16:56 473又稱為IP-SAN,是一种基 ... -
HTTP状态代码含义与其解决方法
2012-11-29 14:04 1054HTTP状态代码含义与其解决方法 转自:http://bugu ... -
微软知识库kb是什么?
2012-10-23 18:53 0您在搜索微软kb(微软知识库 knowledge base)和 ... -
Oracle 9i 、10G 编程艺术之深入数据库体系结构
2011-10-30 16:13 1043第一章 [1.3.3 多版本] Oracle 能充分利用不 ... -
启动Eclipse3.6 报错 EXCEPTION_ACCESS_VIOLATION (0xc0000005)
2011-10-27 12:04 5134错误摘要 安装 subclipse1.6.5 后,eclips ... -
apache2.2.x 整合jClime Application Server
2011-07-29 17:24 862配置 apache2.2.15 ./configure --e ... -
Maven之-使用自已的Manifest File
2011-07-25 13:37 1164By default, Maven Archiver gene ... -
[一步一步Felix] OSGi 4.2发布了
2011-04-06 00:50 1820近日OSGi联盟发布了O ...
相关推荐
Hibernate提供了四种对象状态:瞬时态、持久态、脱管态和临时态,理解这些状态对于有效操纵持久化对象至关重要。 **三、配置Hibernate** 在开始操纵持久化对象之前,需要先配置Hibernate。这包括编写Hibernate配置...
Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...
Hibernate的核心概念之一就是持久化对象的生命周期,这涉及到对象在数据库中的状态及其与Session的关系。 首先,我们来看一下Hibernate中持久化对象的三种基本状态: 1. **瞬时对象(Transient Objects)**: - ...
可以通过关闭 Session 或使用 `evict()` 方法将持久化对象移出缓存。 3. Session 的操作方法 - **save()**:将对象加入缓存,变为持久化对象,并分配唯一 OID。插入操作会在缓存清理时执行。 - **update()**:将...
在JDO中,首先需要编写POJO,然后通过一个名为Enhancer的工具在编译后阶段对POJO的字节码进行增强,生成对应的持久化对象。这意味着JDO的转换过程发生在编译期间,而Hibernate的转换是在运行时。 Hibernate的优点...
本文将深入探讨Hibernate中的持久化对象生命周期,包括瞬时对象、持久化对象和游离对象的状态转换及其特性。 1. 瞬时对象(Transient Objects) 瞬时对象是指通过`new`操作符创建但尚未与数据库记录关联的Java对象...
《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...
- **数据持久化**: 指的是程序中的对象状态在系统重启后仍然能够保存,即使没有内存支持也能保持其状态。在Hibernate中,数据持久化是通过对象和数据库记录之间的映射实现的。 2. **Hibernate 配置** - **...
4. **HQL(Hibernate Query Language)**:面向对象的查询语言,类似于SQL,但更接近Java的语法,用于检索和操作持久化对象。 5. **第二级缓存**:Hibernate支持查询结果的缓存,可以显著提高系统性能,特别是对于...
在Java开发中,持久化是将应用程序中的对象状态保存到持久存储介质(如数据库)的过程。Hibernate通过提供一种对象-关系映射机制,使得Java对象可以直接与数据库表进行交互,而无需编写大量的SQL语句。这种映射机制...
了解实体类、持久化属性、主键、对象状态等基本术语。 2. **配置与环境搭建**:学习如何配置Hibernate,包括hibernate.cfg.xml文件的编写,以及JDBC连接池的设置。 3. **对象关系映射(ORM)**:研究Hibernate的...
对象持久化是将应用程序中的对象状态存储到持久化介质(如数据库)的过程,使得即使程序关闭,对象的状态也能被保留下来。在Hibernate中,对象的生命周期包括瞬时态、托管态、持久态和脱管态。通过Hibernate,我们...
总结来说,Hibernate中的持久化是ORM的一种实现,它简化了Java应用与关系数据库之间的数据交换,使得对象的状态能够在数据库中持久保存,同时减少了直接操作SQL的繁琐工作,提高了开发效率和代码的可维护性。...
在Java中,持久化对象(Persistent Object)是指其状态可以在数据库中长期保存的对象。通过Hibernate,我们可以将这些对象与数据库表中的记录相对应,使得数据操作变得简单且直观。 Hibernate的核心概念之一是实体...
2. **查询执行前**:当调用`Session.find()`或`Session.iterate()`方法时,如果缓存中存在对应的持久化对象,Session会首先尝试从缓存中获取,而不是直接访问数据库。若缓存中无数据,才会发起数据库查询。 #### 四...
#### 改变持久化对象状态的方法 - **将瞬态对象转换为持久化状态**:主要通过`save()`或`persist()`方法实现。这两个方法的主要区别在于,`save()`方法返回对象的标识符,而`persist()`方法则不返回任何值。 - **...
【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...
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:java持久化对象详解01”聚焦于理解Hibernate如何将Java对象持久化到数据库中。 首先,让我们了解一下什么是持久化对象。在Java中,持久化对象是指那些状态可以被保存到持久存储介质(如数据库)...