刚刚查看了一下Hibernate的DOC,发现里面也讲到了Hibernate实体的三种状态,下面是官方的解释:
The main function of the Session is to offer create, read and delete operations for instances of mapped entity classes. Instances may exist in one of three states:
transient: never persistent, not associated with any Session
persistent: associated with a unique Session
detached: previously persistent, not associated with any Session
Transient instances may be made persistent by calling save(), persist() or saveOrUpdate(). Persistent instances may be made transient by calling delete(). Any instance returned by a get() or load() method is persistent. Detached instances may be made persistent by calling update(), saveOrUpdate(), lock() or replicate(). The state of a transient or detached instance may also be made persistent as a new persistent instance by calling merge().
save() and persist() result in an SQL INSERT, delete() in an SQL DELETE and update() or merge() in an SQL UPDATE. Changes to persistent instances are detected at flush time and also result in an SQL UPDATE. saveOrUpdate() and replicate() result in either an INSERT or an UPDATE.
It is not intended that implementors be threadsafe. Instead each thread/transaction should obtain its own instance from a SessionFactory.
A Session instance is serializable if its persistent classes are serializable.
A typical transaction should use the following idiom:
Session sess = factory.openSession();
Transaction tx;
try {
tx = sess.beginTransaction();
//do some work
...
tx.commit();
}
catch (Exception e) {
if (tx!=null) tx.rollback();
throw e;
}
finally {
sess.close();
}
If the Session throws an exception, the transaction must be rolled back and the session discarded. The internal state of the Session might not be consistent with the database after the exception occurs.
关于这三种状态,网上已经有很多解释,不过我觉得还是看官方的权威
分享到:
相关推荐
首先,我们要了解Hibernate定义的三种实体状态: 1. **临时状态(Transient)**:当我们在程序中通过`new`关键字创建一个实体对象时,它默认处于临时状态。此时,对象未被Hibernate管理,即使对象包含了主键ID,如果...
在本教程中,我们将深入探讨实体对象的三种状态以及`saveOrUpdate`方法的工作原理。 首先,让我们了解实体对象的三种状态: 1. **瞬时状态(Transient)**:当一个新的实体对象在内存中创建,但尚未被Hibernate...
《Hibernate实体层设计》 在Java企业级应用开发中,持久化层的处理是一个至关重要的环节,而Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本资料主要探讨的是如何利用Hibernate进行...
本篇将详细阐述Hibernate中的对象映射关系以及对象的三种状态。 对象映射是Hibernate的核心特性,它通过ORM(Object-Relational Mapping)技术将Java对象与数据库表之间的关系进行映射。Hibernate提供了一种声明式...
在这个主题“hibernate操纵实体对象”中,我们将探讨如何使用Hibernate来创建、更新、删除和查询数据库中的实体对象。 首先,`HibernateSessionFactory`是Hibernate的核心组件之一,它负责创建`Session`对象。`...
在Hibernate中,核心概念包括实体(Entities)、持久化类(Persistent Classes)、会话(Sessions)、事务(Transactions)和查询(Queries)。实体是应用程序中的业务对象,它们对应数据库中的表;持久化类是包含@...
会话是Hibernate中与数据库交互的主要接口,它负责管理实体的状态。会话具有瞬时性、持久性和临时性三种状态。通过`Session`对象,我们可以进行增删改查(CRUD)操作。例如,使用`save()`或`saveOrUpdate()`方法保存...
12. **实体生命周期**:阐述了Hibernate中实体的生命周期状态(瞬时、持久化、脱管和临时),以及状态转换和事件监听。 13. **性能优化**:提供了一些最佳实践和技巧,如批处理、延迟加载、缓存配置等,以提高...
在Hibernate ORM框架中,实体对象可以处于三种不同的状态:瞬时状态(Transient)、持久状态(Persistent)和脱管状态(Detached)。理解这些状态对于有效地管理和更新数据库中的数据至关重要。 **瞬时状态...
本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...
Hibernate定义了四种实体状态: - **瞬时态(Transient)**:新创建的对象,尚未与Session关联,不具有持久性。如果对象被垃圾收集器清除,那么数据将丢失。 - **持久态(Persistent)**:对象已经通过Session的...
在Hibernate中,dom4j被用作默认的XML解析器,负责解析和生成Hibernate的配置文件(如hibernate.cfg.xml)以及实体类的映射文件(如.hbm.xml)。通过dom4j,Hibernate可以轻松地处理XML元数据,创建和更新数据库表...
7. **实体生命周期**:了解Hibernate如何处理对象的创建、更新、删除等状态变化。 8. **性能调优**:包括批处理、连接池配置、查询优化等方面的知识。 9. **拦截器和事件监听器**:学习如何自定义行为,比如在对象...
在Hibernate中,对象有三种状态:瞬时态、持久态和脱管态。了解并正确管理这些状态对于高效使用Hibernate至关重要。 ### 6. HQL与 Criteria 查询 Hibernate Query Language (HQL) 是一种面向对象的查询语言,类似...
Hibernate定义了四种实体状态:瞬时态、持久态、托管态和游离态。理解这些状态有助于正确处理对象的生命周期,避免出现并发问题。 ### 九、性能优化 为了提高性能,Hibernate提供了多种策略,如延迟加载、批处理、...
1. Hibernate基本概念:介绍Hibernate的核心思想,如实体、持久化类、对象状态管理、事务处理等,帮助初学者建立对ORM框架的基本认识。 2. Hibernate配置:讲解如何配置Hibernate的XML文件,包括hibernate.cfg.xml...
5. **实体状态管理**: Hibernate区分了瞬时态、持久态、脱管态和游离态,便于理解对象的生命周期。 以上内容只是Hibernate中文开发者文档的基础概述,实际文档会包含更详细的使用示例、最佳实践和解决常见问题的...
2. **安装与配置**:文档会详述如何在项目中集成Hibernate 3.6,包括添加必要的库依赖、配置Hibernate的主配置文件(hibernate.cfg.xml)以及实体类的映射文件(.hbm.xml)。 3. **对象关系映射**:Hibernate的核心...
持久化上下文:这部分讲解了如何进行实体持久化、删除实体、获取实体、刷新实体状态以及使用游离态数据等操作。还讲述了如何通过natural-id获得实体以及更改实体的状态。 访问数据库:涉及如何配置和使用不同的...