首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Hibernate save, saveOrUpdate, persist, merge, update 区别

Hibernate Persist hibernate persist()方法与save()方法(在事务中执行)类似,persist()方法会将实体对象添加到持久化上下文中,如此被保存的实体后续改变会被记录...(发现原作者的第一点让人很疑惑,感觉是persist()不在事务中执行就会报错。经过测试,persist()在事务外运行不会报错,但是不会插入数据到数据库。...原作者的意思可能是:persist()方法只能够在事务中被执行,才能够将数据插入到数据库中) 最后,persist()方法返回值是void,也就是说不会返回任何的值。...persist()方法: persist()方法会将实体对象添加到持久化上下文中,如此被保存的实体后续改变会被记录。...persist()方法必须在事务内执行,才能够将数据插入数据库。如果不在事务范围内执行,数据将丢失。 最后,persist()方法返回值是void,也就是说不会返回任何的值。

2.2K30

Spring整合Hibernate 之 save、saveorupdate、persist方法的区别

这三个方法,也就是save()、saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别。...还有,save()的返回值是一个Serializable对象,而persist()方法返回值为void。...的区别 返回类型不同:save返回Serializable对象,而persist返回void ID赋值时机不同:二者同样用于将transient实例持久化,但persist不保证ID值立即赋给持久化实例...transaction外的行为不同:如果在transaction之外调用,persist保证会立即执行INSERT语句;而save则不保证(save返回一个identifier,如果必须执行INSERT...来获取该identifier,则就会立即执行INSERT,而不论是在transaction之内或之外) 使用场景:由于上述第三点区别,persist方法适用于被扩展的Session上下文的长期运行的会话中

1K100

hibernate persist update 方法没有正常工作(不保存数据,不更新数据)

原因 hibernate persist()以及update()方法只有事务执行flush()或者commit()方法,才将数据写入数据库。...sessionFactory2.openSession(); Transaction tx = session2.beginTransaction(); session1.persist...第二个例子test2()方法,调用save2()方法,persist()方法被包围在spring aop配置的事务和session2的事务中(事务有提交),从输出结果可以看出,数据没有插入数据库。...第三个例子test3()方法,persist()方法被包围在spring aop配置的事务和session1的事务中(事务有提交),从输出结果可以看出,数据成功插入数据库。...通过实例程序可以看出,persist(),以及update()方法需要在调用它们的session中的事务中执行,最后该session的事务需要commit。

2.3K10

Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是做什么的?有什么区别?

瞬时态的实例可以通过调用save()、persist()或者saveOrUpdate()方法变成持久态;游离态的实例可以通过调用 update()、saveOrUpdate()、lock()或者replicate...save()和persist()将会引发SQL的INSERT语句,而update()或merge()会引发UPDATE语句。...对于persist()方法,按照官方文档的说明:① persist()方法把一个瞬时态的实例持久化,但是并不保证标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间;② persist...()方法保证当它在一个事务外部被调用的时候并不触发一个INSERT语句,当需要封装一个长会话流程的时候,persist()方法是很有必要的;③ save()方法不保证第②条,它要返回标识符,所以它会立即执行

98430

新特性解读 | 说说 MySQL 8 对于持久化变量的一些修改

注意:PERSISTPERSIST_ONLY 设置的都是 Global 级别,不是 Session 级别; 删除 mysqld-auto.cnf ⽂件 或设置 persisted_globals_load.../ PERSIST_ONLY 修改变量的值, ⽽不是⼿⼯修改配置⽂件,除⾮变量只能通过修改配置⽂件的⽅式修改; 权限: SET PERSIST 需要 system_variables_admin 权限...SET PERSIST_ONLY 需要 system_variables_admin 和 persist_ro_variables_admin 权限 权限补充说明: MySQL 安装完成后,root...表 performance_schema.persisted_variables 常用语句: set persist max_connections=500 ; # persist 不仅修改了内存中的值...set persist_only back_log=500 ; # persist_only 只会将全局变量持久化到配置文件中,不会修改内存中的值 set @@persist_only.back_log

75820
领券