Hibernate save基础简介
创始人
2024-06-07 14:51:42
0

Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate save,包括介绍Hibernate saveOrUpdate等方面。

在所有之前,说明一下,对于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 save和update区别

把这一对放在***位的原因是因为这一对是最常用的。
◆save的作用是把一个新的对象保存
◆update是把一个脱管状态的对象或自由态对象(一定要和一个记录对应)更新到数据库

Hibernate saveOrUpdate和update区别

这个是比较好理解的,顾名思义,saveOrUpdate基本上就是合成了save和update,而update只是update;引用Hibernate reference中的一段话来解释他们的使用场合和区别

通常下面的场景会使用update()或saveOrUpdate():
◆程序在***个session中加载对象,接着把session关闭
◆该对象被传递到表现层
◆对象发生了一些改动
◆该对象被返回到业务逻辑层最终到持久层
◆程序创建第二session调用第二个session的update()方法持久这些改动

Hibernate saveOrUpdate(po)做下面的事:
◆如果该po对象已经在本session中持久化了,在本session中执行saveOrUpdate不做任何事
◆如果savaOrUpdate(新po)与另一个与本session关联的po对象拥有相同的持久化标识(identifier),抛出一个异常
org.Hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [org.itfuture.www.po.Xtyhb#5]
◆saveOrUpdate如果对象没有持久化标识(identifier)属性,对其调用save() ,否则update() 这个对象

Hibernate save和persist区别

这个是最迷离的一对,表面上看起来使用哪个都行,在Hibernate reference文档中也没有明确的区分他们。这里给出一个明确的区分。(可以跟进src看一下,虽然实现步骤类似,但是还是有细微的差别)

主要内容区别:
1,persist把一个瞬态的实例持久化,但是并"不保证"标识符(identifier主键对应的属性)被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时候。
2,save, 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert

【编辑推荐】

  1. iBATIS与Hibernate间的取舍
  2. JDBC与Hibernate读取性能分析
  3. 浅析NHibernate一对一映射的延迟加载
  4. 使用Hibernate 3二级缓存的四个经验
  5. MySQL存储过程中的Hibernate JDBC

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...