Hibernate update浅谈

开发 后端
这里介绍Hibernate update操作的是在自由态或脱管状态(因session的关闭而处于脱管状态)的对象//updateSQL,而flush是操作的在持久状态的对象。

在所有之前,说明一下,对于Hibernate,它的对象有三种状态,transient、persistent、detached

下边是常见的翻译办法:
◆transient:瞬态或者自由态(new DeptPo(1,”行政部”,20,”行政相关”),该po的实例和session没有关联,该po的实例处于transient)
◆persistent:持久化状态(和数据库中记录想影射的Po实例,它的状态是persistent, 通过get和load等得到的对象都是persistent)
◆detached:脱管状态或者游离态
(1)当通过get或load方法得到的po对象它们都处于persistent,但如果执行delete(po)时(但不能执行事务),该 po状态就处于detached, (表示和session脱离关联),因delete而变成游离态可以通过save或saveOrUpdate()变成持久态
(2)当把session关闭时,session缓存中的persistent的po对象也变成detached

Hibernate update和flush区别

Hibernate update操作的是在自由态或脱管状态(因session的关闭而处于脱管状态)的对象//updateSQL,而flush是操作的在持久状态的对象。

默认情况下,一个持久状态的对象的改动(包含set容器)是不需要update的,只要你更改了对象的值,等待Hibernate flush就自动更新或保存到数据库了。Hibernate flush发生在以下几种情况中:
1, 调用某些查询的和手动flush(),session的关闭、SessionFactory关闭结合。get()一个对象,把对象的属性进行改变,把资源关闭。
2,transaction commit的时候(包含了flush)

Hibernate update和lock区别

Hibernate update是把一个已经更改过的脱管状态的对象变成持久状态

lock是把一个没有更改过的脱管状态的对象变成持久状态(针对的是因Session的关闭而处于脱管状态的po对象(2),不能针对因delete而处于脱管状态的po对象)

对应更改一个记录的内容,两个的操作不同:
◆update的操作步骤是:属性改动后的脱管的对象的修改->调用update
◆lock的操作步骤是:调用lock把未修改的对象从脱管状态变成持久状态-->更改持久状态的对象的内容-->等待flush或者手动flush

clear和evcit的区别

clear完整的清除session缓存。evcit(obj)把某个持久化对象从session的缓存中清空。
session.lock(xtyhb,LockMode.NONE);
//表示直接到缓存中去找变成持久态的对象
session.lock(xtyhb,LockMode.READ);
//先通过ID读数据库该记录的ID看是否有该记录,如果有接着到缓存中去找变成持久态的对象

【编辑推荐】

  1. iBATIS与Hibernate间的取舍
  2. JDBC与Hibernate读取性能分析
  3. 浅析NHibernate一对一映射的延迟加载
  4. 使用Hibernate 3二级缓存的四个经验
  5. MySQL存储过程中的Hibernate JDBC
责任编辑:佚名 来源: IT168
相关推荐

2009-09-28 15:47:59

Hibernate O

2009-09-23 17:07:31

Hibernate C

2009-09-23 15:50:21

Hibernate u

2009-06-18 11:43:40

Hibernate uHibernate s

2009-09-28 13:43:28

使用Hibernate

2009-09-29 10:46:58

Hibernate领域

2009-09-25 10:53:40

Hibernate S

2009-09-22 10:09:21

Hibernate S

2009-09-29 16:16:58

Hibernate H

2009-09-22 13:41:10

直接使用Hiberna

2009-09-28 13:39:01

Hibernate工作

2009-09-27 10:02:29

定制Hibernate

2009-09-29 15:52:26

Hibernate X

2009-09-21 17:17:11

Hibernate二级

2009-09-27 14:06:57

Hibernate o

2009-06-24 08:02:15

Hibernateupdate与save

2009-06-10 09:58:32

Oracle sequHibernate

2009-09-25 09:21:27

Hibernate元数

2009-02-11 09:37:32

Hibernate分页技术JSP

2009-09-23 14:40:17

Hibernate F
点赞
收藏

51CTO技术栈公众号