Hibernate的工作流程以及三种状态(面试题)

Hibernate的工作流程以及三种状态

转载自:http://www.cnblogs.com/fifiyong/p/6390699.html

Hibernate的工作流程:

1. 读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory

3. 打开Sesssion

4.创建事务Transation

5. 持久化操作

6.提交事务

7.关闭Session

8. 关闭SesstionFactory

Hibernate中bean 的三种状态

Hibernate对象分为三种状态:瞬时态(new 出来的或者实例化时session无关的),

持久态(session关联)与游离态(曾经与session关联)。其中持久态的对象是PO

,瞬时态、托管态的对象可作为VO。(PO不应该直接用作v层)所以在使用中应该注意三态的转化。

如:

在进行数据操作的一系列过程中,save或者saveorupdate操作可以把瞬时态或者游离态的对象转换成持久态,而

delete或者session的close、flush等操作将会把session相关联的持久态对象转换成游离态。

Hibernate对象的状态和生命周期

使用new操作符初始化的对象是一个瞬时态的(Transient)

(没有任何跟数据库表相关联的行为,只要应用不再引用这些对象,它们的状态就会丢失,并由垃圾回收机制回收);

瞬时态对象经过save(),saveOrUpdate会转换成持久态,由session统一管理,持久态对象的操作与数据库同步;

持久态对象经过evict(),close(),clear()等会转换成游离态,这时虽然被持久化,但是不在session缓存中,通过

lock(),update(),saveOrUpdate又会转换成持久态。 通过get(),load(),find(),iterate()

获得的对象直接就是持久态的。

时间: 2024-11-10 11:20:28

Hibernate的工作流程以及三种状态(面试题)的相关文章

Hibernate的工作流程以及三种状态

Hibernate的工作流程: 1. 读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3. 打开Sesssion 4.创建事务Transation 5. 持久化操作 6.提交事务 7.关闭Session 8. 关闭SesstionFactory Hibernate中bean 的三种状态 Hibernate对象分为三种状态:瞬时态(new 出来的或者实例化时session无关的), 持久态(session关联)与游离态(曾经与session关联).其中持久态的对象是P

Hibernate复习(五)对象的三种状态和缓存机制

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; class

Hibernate 入门 04 - Hibernate中Java对象的三种状态

目录:(后续不断更新...) Hibernate 入门 01 - 框架技术 (介绍Hibernate框架的发展由来) Hibernate 入门 02 - Hibernate介绍及其环境搭建 Hibernate 入门 03 - 使用Hibernate完成持久化操作 Hibernate 入门 04 - Hibernate中Java对象的三种状态 ▁▃▅ Hibernate中Java对象的三种状态▅▃▁ 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久

Hibernate入门 (二)三种状态

.大配置 方言 property name="dialect" 取值 自动构建表结构 property name="hbm2ddl" true connection_url: 连接字符串 显示sql show_sql 格式化SQL format_sql2.Hibernate测试类中操作步骤 7个步骤 1.读取配置文件,形成config对象 2.SessionFactory 3.获取Session 4.开启一个事务 5.执行操作 6.结束(提交或者回滚) 7.关闭 3

Hibernate(六)__对象的三种状态

瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象. 持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交: 持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到). (当对象save后,会将数据持久化,这时obj.set()后再提交事务hibernate会检测到数据的修改. 而如果在save这个对象之前(即

hibernate(二)一级缓存和三种状态解析

序言 前一篇文章知道了什么是hibernate,并且创建了第一个hibernate工程,今天就来先谈谈hibernate的一级缓存和它的三种状态,先要对着两个有一个深刻的了解,才能对后面我要讲解的一对多,一对一.多对多这种映射关系更好的理 --WH 一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先session将一个对象加入自己的管理范围内,其实也就是把该

Hibernate中Java对象的三种状态

首先hibernate中对象的状态有三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用, 瞬态到持久态的方法有save().saveOrUpdate().get().load():持久态到瞬态的方法有delete(): 游离态到持久态的方法有update().saveOrUpdate().lock():持久态到游离态的方法有:session.close().session.evict().session.clear(). 二,Hibernate的状态 hibernate的

Hibernate之对象的三种状态

Hibernate之Java对象的三种状态 一.简述 本博文大部分的思想和内容引子CSND上名为 FG2006 这位大神的文章,连接地址为:http://blog.csdn.net/fg2006/article/details/6436517.在此表示歉意和深深的谢意.如若各位读者在阅读的过程中发现有任何的纰漏或者错误,请及时之处,本人不胜感激, Hibernate中对象有三种状态: 临时状态(Transient).持久状态(Persistent).游离状态(Detached). 临时状态:刚刚

【SSH三大框架】Hibernate基础第三篇:实体对象的三种状态以及get、load、persist三个方法的详解

一.Hibernate中实体对象分为三种状态:瞬态.持久.脱管 瞬态(transient):这种状态下的实体对象,数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来的并且与Session没有任何关系的对象. 持久(persistent):数据库中有数据与之对应,当前与Session有关联,并且相关联的Session并没有关闭,事务没有提交.PS:持久对象发生改变的时候,在事务提交的时候会影响到数据库中. 脱管(detached):数据库中有数据与之对应,但当前没有Se