1.瞬时状态(Transient)
由new命令开辟内存空间的Java对象,也就是平时所熟悉的普通Java对象。
如:Student stu = new Student();
瞬时对象特点:
(1)不和Session实例关联
(2)在数据库中没有和瞬时对象关联的记录
2. 持久状态(Persistent)
持久的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier).
持久对象总是与Session和Transaction相关联,在一个Session中,对持久对象的改变不会马上对数据库进行变更,而必须在Transaction终止,也就是执行commit()之后,才在数据库中真正运行SQL进行变更,持久对象的状态才会与数据库进行同步。在同步之前的持久对象称为脏(dirty)对象。
瞬时对象转为持久对象:
(1) 通过Session的save()和saveOrUpdate()方法把一个瞬时对象与数据库相关联,这个瞬时对象就成为持久化对象。
(2) 使用fine(),get(),load()和iterater()待方法查询到的数据对象,将成为持久化对象。
持久化对象的特点:
(1) 和Session实例关联
(2) 在数据库中有和持久对象关联的记录
3. 脱管状态(Detached)
与持久对象关联的Session被关闭后,对象就变为脱管对象。对脱管对象的引用依然有效,对象可继续被修改。
脱管对象特点:
(1) 本质上和瞬时对象相同
(2) 只是比爱瞬时对象多了一个数据库记录标识值id.
持久对象转为脱管对象:
当执行close()或clear(),evict()之后,持久对象会变为脱管对象。
瞬时对象转为持久对象:
通过Session的update(),saveOrUpdate()和lock()等方法,把脱管对象变为持久对象。
Transient :数据库没有与之对应的对象。没有纳入session管理。
Persistent:在session缓存中。在数据库中有与之对应的记录。
Detached:只是从session中清掉了,数据库中有与之对应的记录。没有纳入session管理
Load 和get的区别:
Get不支持lazy,load支持lazy。
//马上发出查询sql,加载User对象
//采用get加载数据,如果数据库中不存在相应的数据,返回null
User user = (User)session.get(User.class,
"402880d01b9bf210011b9bf2a2ff0001");
//不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
//延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)
//hibernate延迟加载实现原理是代理方式
//采用load加载数据,如果数据库中没有相应的数据
//那么抛出ObjectNotFoundException
User user = (User)session.load(User.class,
"402880d01b9bf210011b9bf2a2ff0001");
- 大小: 76.4 KB
- 大小: 25.2 KB
分享到:
相关推荐
在 Hibernate 中,对象有三种状态:瞬时对象(Transient Object)、持久对象(Persist Object)和离线对象(Detached Object)。瞬时对象未被 Session 管理,且在数据库中无对应记录。持久对象在数据库中有记录,并...
本学习笔记和代码资源是基于黑马程序员在 B 站上的《Hibernate框架》课程,该课程深入浅出地讲解了 Hibernate 的核心概念和实际应用。 **第一天:Hibernate 概述与环境搭建** 1. **Hibernate 概念**:Hibernate 是...
《Hibernate3.3_学习笔记》是一份详细记录了Hibernate3.3版本特性和使用方法的文档,旨在帮助开发者深入理解和应用这一强大的对象关系映射(ORM)框架。Hibernate是Java开发中的一个明星库,它简化了数据库操作,...
### Hibernate 学习笔记知识点详解 #### 一、Hibernate 简介 - **概念**:Hibernate 是一种“对象/关系映射”(Object/Relational Mapping,简称 ORM)技术,用于解决 Java 应用程序与关系型数据库交互的问题。 - *...
韩顺平老师的hibernate笔记,是针对他视频教程的配套学习资料,旨在帮助学习者深入理解和应用Hibernate。 一、Hibernate简介 Hibernate是Java领域内广泛使用的ORM框架,它允许开发人员在Java对象和关系数据库之间...
Hibernate提供了一种在Java应用程序中持久化对象的方式,通过映射数据库表到Java类,使得开发者可以使用面向对象的方式来操作数据库,降低了SQL编程的复杂性。其核心组件包括Configuration、SessionFactory、Session...
在hibernate中,对象的生命周期包括瞬态、持久化、托管和脱管四个状态。通过Session对象,我们可以进行持久化操作,如保存(save())、更新(update())、删除(delete())和加载(get()、load())实体。此外,还有...
Hibernate,作为Java领域中的一个著名持久化框架,为开发者提供了强大的对象关系映射(ORM)功能,极大地简化了数据库操作。本资料集是黑马程序员2016年推出的Hibernate专题课程的讲义和笔记,涵盖了4天的全面学习...
3. **Session(会话)**: Session 是 Hibernate 中的主要接口,用于在应用和持久化存储之间提供事务性的边界。它是临时性的,负责管理对象的状态并执行数据库操作。 4. **SessionFactory(会话工厂)**: ...
3. **会话(Session)**: Hibernate 会话是应用程序与数据库之间交互的桥梁,负责对象的持久化操作。它维护了对象和数据库记录之间的状态,确保了事务的一致性。 4. **配置(Configuration)**: Hibernate 配置文件...