小编Con*_*D55的帖子

使 hibernate save() 和 update() 作为单个插入优化

我想知道如何通过我的 Hibernate (4) & Oracle 设置减少 SQL 更新。

一个简单的案例可能是这样的:

打开一个会话/事务,使用 session.save() 创建一个新实体 Xyz,处理一些业务逻辑,对 Xyz 进行一些更改并调用 session.update(),然后让会话正常关闭,并通过提交到数据库休眠。

提交时,Hibernate 将执行插入操作,然后执行更新 —— 但它真正需要做的只是一次插入操作,但在本例中使用 Xyz的最新属性。

有没有人有做这种事情的任何想法/模式?或者有什么方法可以改变 Hibernate 的行为?或者你对此有什么看法——它是一个完整的反模式吗?

我知道 Hibernate 足够聪明,可以省略多个更新,当一个更新只是覆盖另一个更新时——那么为什么插入不相似呢?

这个小片段可以重现“问题”:

MyEntity e = new MyEntity("xxx"); 
Session session = sessionFactory.openSession(); 
session.beginTransaction();
session.save(e); e.setName("yyy"); 
session.getTransaction().commit(); 
session.close();
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我没有什么可担心的触发因素。

这个例子非常简单,性能问题可能看起来微不足道,但实际上我正在处理一个更复杂的对象(即多次插入和更新),而且数量很大,所以避免更新会很好。

optimization session hibernate insert save

5
推荐指数
1
解决办法
3269
查看次数

标签 统计

hibernate ×1

insert ×1

optimization ×1

save ×1

session ×1