当new一个对象时,这个对象就是瞬时对象,此时它们没有跟任何数据库表项关联;
瞬时对象(Transient Object):
使用new操作符初始化的对象不是立刻就持久的,首先是瞬时的,也就是说他们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其他对象所引用),它们的状态就会丢失,并由垃圾回收机制回收;
当一个瞬时对象被save(),update()时,这个对象的状态就变成持久化对象!
持久化对象(Persist Objects):
持久化实例是任何具有数据库标识的实例,它有持久化管理器session统一管理,持久实例是在事务中进行操作;它们的状态在事务结束时同数据库进行同步,当事务提交时,通过执行SQL语句吧内存中的状态同步到数据库中;
当一个持久化执行delete时,状态会由Persist变成Transient!
当一个对象evict(),close(),clear()时,就会状态由Persist变成Detached!
离线状态(Detached object):
session关闭后,持久化对象会变成离线状态,离线表示这个对象不能再与数据库保持同步,它们也不再受hibernate管理;
当这个离线状态执行Update(),saveOrUpdate(),或lock()方法是,状态会转化到Persistent!
看下代码解释:addStudentTest.java:
package cn.keith.hibernate;
import java.util.Date;
import junit.framework.TestCase;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.keith.hibernate.hibernateUtil.HibernateUtils;
public class StudentTest extends TestCase {
/***
* 一个操作对应一个session,Transaction
*/
public void addStudentTest() {
Session session = null;
Transaction ts = null;
Student student = null;
try {
// 获取session
session = HibernateUtils.getSession();
// 开启事务
ts = session.beginTransaction();
// 这时hibernate是Transient(暂停的,路过的)状态
student = new Student();
student.setName("keith");
student.setBirthday(new Date());
/**
* 这时hibernate是Persistent(坚持的,持久稳固的)状态,hibernate处于persistent时,
* 当对象属性发生改变时, hibernate在清理缓存时,会和数据库同步;
*/
session.save(student);
// 提交事务
ts.commit();
} catch (Exception e) {
e.printStackTrace();
// 当发生错误时,回滚事务
ts.rollback();
} finally {
// 最后关闭session
HibernateUtils.closeSession(session);
}
// 当结束完一个session时,hibernate处于detached(分离的,分开的)状态
student.setName("kejian");
try {
session = HibernateUtils.getSession();
ts = session.beginTransaction();
/**
* 这时hibernate是Persistent(坚持的,持久稳固的)状态,hibernate处于persistent时,
* 当对象属性发生改变时, hibernate在清理缓存时,会和数据库同步;
*/
session.update(student);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
}
分享到:
相关推荐
在Struts1.2和Hibernate3.2集成中,Spring可以作为它们之间的粘合剂,比如管理Action的生命周期,提供数据访问的事务控制。 再来看Hibernate3.2,它是Java世界中广泛使用的ORM解决方案。通过将Java对象映射到数据库...
SessionFactory是线程安全的,通常在整个应用生命周期中只创建一个。 - **Session**:它是与数据库交互的前线接口,用于执行CRUD操作(创建、读取、更新和删除)。 - **Query和Criteria API**:这两者提供了执行...
9. **实体状态管理**:Hibernate 3.2 理解对象的生命周期,包括瞬时态(Transient)、持久态(Persistent)、游离态(Detached)和删除态(Removed),这有助于正确管理对象的状态并优化数据库操作。 10. **集合...
- 可以通过实现Hibernate的事件接口,注册监听器,对对象的生命周期事件(如保存、更新、删除等)进行自定义处理。 综上所述,Hibernate 3.2是一个强大而灵活的ORM框架,它极大地简化了Java开发中的数据持久化工作...
SessionFactory是线程安全的,一般在应用启动时创建一次,然后在整个应用生命周期中重复使用。 3. **Session**:Session是与数据库交互的主要接口,它提供了保存、更新、删除对象以及执行HQL(Hibernate查询语言)...
Spring2.5则是一个全面的后端解决方案,它包含了依赖注入(DI)和面向切面编程(AOP)的核心特性,可以用来管理对象的生命周期和装配。此外,Spring的DAO支持和事务管理简化了数据访问层的实现。Spring与Hibernate的...
10. **Callback事件**:Hibernate允许在对象生命周期中的特定时刻(如加载、保存、更新和删除)注册回调方法,实现业务逻辑。 11. **Association Mapping关联映射**:Hibernate支持一对一、一对多、多对一、多对多...
它是线程安全的,通常在应用启动时创建,然后在整个应用生命周期内复用。 4. **Session**:Session 是与数据库交互的主要接口,提供了事务管理和数据持久化的功能。它支持CRUD(创建、读取、更新、删除)操作,并...
8. **事件监听器**:Hibernate 3.2允许开发者注册事件监听器,对对象的生命周期事件(如加载、保存、更新、删除)进行拦截和处理。 9. **集合映射**:在实体类中,可以定义一对多、一对一、多对一、多对多的关系。...
五、对象状态与生命周期 在Hibernate中,对象有三种状态:瞬时态、持久态和脱管态。理解这些状态对于正确操作对象至关重要,例如,只有持久态对象才能参与事务。 六、缓存机制 Hibernate 3.2引入了二级缓存,通过...
在SSH集成中,Spring主要负责服务层的管理,包括bean的生命周期管理、事务控制以及与Hibernate的整合。 Hibernate3.2是一个对象关系映射(Object-Relational Mapping,ORM)框架,它简化了数据库操作,将Java对象与...
讲解其生命周期、事务管理和并发控制。 5. **Query与Criteria API**:介绍HQL(Hibernate Query Language),一种面向对象的查询语言,以及Criteria API,用于动态构建查询。包括基本查询、条件查询、分页查询、...
【hibernate3.2课件共31页.pdf.zip】这个压缩文件包含了关于Hibernate 3.2的详细教学资料,共计31页。Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使开发者能够更加专注于业务逻辑而不是数据库...
8. **事件监听和拦截器**:Hibernate允许开发者通过实现特定接口或使用注解定义监听器,可以在对象生命周期的不同阶段执行自定义逻辑,如对象加载、保存、更新和删除时。 9. **关联映射**:包括一对一(@OneToOne)...
6. **事件监听**:Hibernate允许注册监听器来响应特定的生命周期事件,如`PreInsertEventListener`、`PostUpdateEventListener`等。 7. **类型转换**:`UserType`和`CompositeUserType`接口允许自定义Java类型与...
在本例中,Spring将作为服务层的容器,管理对象的生命周期和依赖关系。通过Spring的AOP,我们可以方便地实现事务管理,确保数据操作的一致性。 Hibernate 3.2 是一款流行的Java持久化框架,它简化了与数据库的交互...
4. Session的生命周期和操作。 5. 数据库操作(增删改查)的示例。 6. 查询语言HQL和Criteria API的使用。 7. 高级话题,如级联操作、缓存、事务处理和实体监听器等。 这样的教程对初学者尤其有用,能够帮助他们...
8. **Event Listeners**:Hibernate3.2引入了事件监听器机制,开发者可以通过实现特定接口,注册监听器来拦截和自定义对象的生命周期事件,如保存、更新、删除等。 9. **Performance Enhancements**:此版本针对...
它通过SessionFactory和Session接口来管理数据库连接和事务,支持实体生命周期的管理,如持久化、加载、更新和删除。 在实际项目中,Struts2和Spring常结合使用,形成MVC架构,Struts2负责请求分发和视图呈现,...