博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法的区别...
阅读量:4576 次
发布时间:2019-06-08

本文共 758 字,大约阅读时间需要 2 分钟。

Hibernate的对象有三种状态,分别是:瞬时态(transient)、持久态(persistent)、游离态(detached)

  1.瞬时态的实例可以通过调用save()、persist()或者saveOrUpdate()方法变成持久态

  2.游离态的实例可以通过调用 update()、saveOrUpdate()、lock()或者replicate()方法变成持久态

  3.save()和update()方法的区别在于前者是将瞬时态对象变成持久态,后者是将游离态对象变成持久态

  4.merge()方法可以完成save()和update()方法的功能,它的意图是将新的状态合并到已有的持久化对象上或创建新的持久化对象。

  5.lock()方法和update()方法的区别,update()方法是把一个已经更改过的脱管状态的对象变成持久态,lock()方法是把一个没有更改过的脱管状态的对象变成持久态

  6. persist()方法把一个瞬时态的实例持久化,但是并不保证标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间persist()方法保证当它在一个事务外部被调用的时候并不触发一个INSERT语句  

  7.saveOrUpdate()方法则是判断对象是否已经存在,如若不存在,则将这个瞬时态对象变成持久态,如若存在,则将这个游离态对象持久化

  8.replicate()方法同样是将游离态对象持久化,不同的是,假设你的对象的ID是用hibernate 负责生成的,但现在你想在数据库中插入一条已经指定ID的记录,这是就需要replicate()方法了

 

转载于:https://www.cnblogs.com/circle-quan/p/6404685.html

你可能感兴趣的文章
过滤器、监听器、拦截器的区别
查看>>
为什么要进行需求分析?通常对软件系统有哪些需求?
查看>>
一些模板
查看>>
jquery和dom元素相互转换
查看>>
放大的X--HDOJ-201307292012
查看>>
题目831-签到-nyoj-20140818
查看>>
百词斩-斩家秘籍
查看>>
Mysql主从配置,实现读写分离
查看>>
真事儿!——我们官网被全站拷贝了!
查看>>
抽象类及抽象方法
查看>>
Canvas基本绘画学习
查看>>
HDU 1050(贪心)
查看>>
java设计模式之代理模式
查看>>
spring心得2--bean的生命周期@Spring监听器的作用@Spring初始化容器案例分析@web项目使用...
查看>>
顺序栈
查看>>
项目中使用的第三方开源库
查看>>
iphone 如何清空UIWebView的缓存
查看>>
Java——变量
查看>>
完整版本的停车场管理系统源代码带服务端+手机android客户端
查看>>
Windows10/Servers 2016的TrustedInstaller权限获取(及乱改System后救砖
查看>>