一、 Hibernate的持久化类状态:
1.1Hibernate的持久化类状态
持久化类:就是一个实体类 与 数据库表建立了映射.
Hibernate为了方便管理持久化类,将持久化类分成了三种状态.
瞬时态 transient:(临时态)
持久态 persistent:
脱管态 detached:(离线态)
1.2三种持久化对象的状态:
Transient瞬时态:
特点:持久化对象没有唯一标识OID.没有纳入Session的管理.
Persistent持久态:
特点:持久化对象有唯一标识OID.已经纳入到Session的管理.
结论:持久化持久态对象有自动更新数据库的能力.
Detached脱管态:
特点:持久化对象有唯一标识OID,没有纳入到Session管理.
1.3区分三种持久化对象的状态:
@Test
// 区分持久化对象的三种状态:
public void demo1(){
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction();
// 向数据库中保存一本图书:
Book book = new Book();// 瞬时态:没有唯一标识OID,没有与session关联.
book.setName("Hiernate开发");
book.setAuthor("XX");
book.setPrice(65d);
session.save(book); // 持久态:有唯一标识OID,与session关联.
// 3.事务提交
tx.commit();
// 4.释放资源
session.close();
book.setName("Struts2开发"); // 脱管态:有唯一的标识,没有与session关联.
}
1.4三种状态对象转换:
1.4.1、瞬时态:
获得:
Book book = new Book();
瞬时--->持久
* save(book);
* save()/saveOrUpdate();
瞬时--->脱管
* book.setId(1);
1.4.2、持久态:
获得:
Book book = (Book)session.get(Book.class,1);
* get()/load()/find()/iterate();
持久--->瞬时:
* delete(book);
* 特殊状态:删除态.(被删除的对象,不建议去使用.)
持久--->脱管:
* session.close();
* close()/clear()/evict();
1.4.3、脱管态:
获得:
Book book = new Book();
book.setId(1);
脱管--->持久:
* session.update();
* update()/saveOrUpdate()/lock()
脱管--->瞬时:
* book.setId(null);
1.5持久态对象有自动更新数据库的能力;
@Test
// 测试持久态的对象自动更新数据库
public void demo2(){
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction();
// 获得一个持久态的对象.
Book book = (Book) session.get(Book.class, 1);
book.setName("Struts2开发");
// session.update(book);
// 3.提交事务
tx.commit();
// 4.关闭资源
session.close();
}
分享到:
相关推荐
《Hibernate教程-最全-最好_204页》是一个深度涵盖Hibernate框架的全面教程,旨在帮助初学者和进阶者深入理解并掌握这一强大的Java持久化技术。在这个204页的教程中,读者将了解到如何利用Hibernate来简化数据库操作...
《Hibernate - 符合Java习惯的关系数据库持久化》是一份关于Hibernate框架的详细教程,旨在帮助Java开发者理解和应用Hibernate进行数据库操作。Hibernate是Java领域中的一款流行的对象关系映射(ORM)工具,它允许...
4. **持久化模型**:在Hibernate中,通过定义实体类(Entity)来代表数据库中的表,使用注解或XML配置文件来描述对象与表之间的映射关系。例如,@Entity、@Table、@Id等注解用于声明实体和主键。 5. **会话和事务**...
本教程“hibernate:java持久化对象详解01”聚焦于理解Hibernate如何将Java对象持久化到数据库中。 首先,让我们了解一下什么是持久化对象。在Java中,持久化对象是指那些状态可以被保存到持久存储介质(如数据库)...
Hibernate的核心概念包括实体(Entity)、持久化类(Persistent Class)、对象状态(Object State)、会话(Session)和事务(Transaction)。这些概念是理解Hibernate工作原理的基础,本教程将逐一解析。 5. **...
《精通Hibernate:Java對象持久化技術詳解》是一本深度解析Hibernate的教程,它旨在帮助Java开发者深入了解和掌握对象关系映射(ORM)技术,特别是通过Hibernate框架实现的持久化机制。Hibernate作为Java领域中广泛...
此外,它还支持对象的状态管理,包括瞬时状态、持久化状态、托管状态和脱管状态。 3. Hibernate查询语言(Hibernate Query Language, HQL) HQL是Hibernate提供的一种面向对象的查询语言,类似于SQL,但更加面向...
总的来说,Hibernate教程旨在帮助开发者理解和掌握如何利用Hibernate高效地管理和操作数据库,包括优化查询性能、处理对象状态、实现数据同步和自定义扩展。通过深入学习这些知识点,开发者能够更好地适应现代企业级...
《深入理解Hibernate:开源持久化框架的探索与实践》 Hibernate是一个开源的Java语言下的对象关系映射(ORM)框架,它为开发者提供了一种在Java应用中管理和操作数据库的强大工具。标题中的“hibernate-...
1. Hibernate基本概念:介绍Hibernate的核心思想,如实体、持久化类、对象状态管理、事务处理等,帮助初学者建立对ORM框架的基本认识。 2. Hibernate配置:讲解如何配置Hibernate的XML文件,包括hibernate.cfg.xml...
最后,通过源码分析,我们可以了解到Hibernate的工作原理,包括对象状态管理、持久化过程以及查询执行机制。这有助于开发者在实际项目中更好地优化代码,提高性能。 总之,《韩顺平Hibernate3.3视频教程源码4-5day...
在Hibernate中,每个持久化类都应至少有一个标识属性,Hibernate通过这个属性来追踪对象的状态,并实现对象的持久化。 在上面提供的内容中,我们看到一个名为Event的JavaBean类,它代表了一个简单的事件对象。该类...
通过阅读源码,我们可以学习到如何处理持久化过程中的各种细节,如对象的状态管理、查询解析和执行、事务控制等。例如,`EntityManager`如何创建和管理`EntityStateful`,以及`SessionFactory`如何初始化和配置缓存...
- `merge()`:将临时对象的状态合并到持久化对象上,即使原对象是非持久化的。 - `delete()`:从数据库中删除对象。 六、查询语言 - HQL(Hibernate Query Language):类似于SQL的面向对象查询语言,支持类、属性...
目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳实践