gpt4 book ai didi

java - Hibernate中什么时候调用flush()和commit()?

转载 作者:行者123 更新时间:2023-12-02 07:35:33 25 4
gpt4 key购买 nike

我有以下情况:

        openSession()

tx = session.beginTransaction();

try
{
...
session.saveOrUpdate(obj_1);
...
session.saveOrUpdate(obj_2);
...
session.saveOrUpdate(obj_3);

session.flush();
tx.commit();
}
catch()
{
tx.rollback()
}
finally
{
session.close();
}

第一次调用 saveOrUpdate(obj_1) 将因重复条目错误而失败。但这个错误实际上不会发生,直到在 session.flush() 结束时访问数据库。

有没有办法让这种错误尽早发生,让我有更多机会正确处理它?

我也不想将事务削减得太小,因为很难回滚。

我的 Hibernate 实体与现有数据库架构相反。

我已在配置文件中禁用缓存:

<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.cache.use_query_cache">false</property>

编辑:

我的问题是如何尽早发现错误(如果有)。错误本身对我来说并不重要。

现在错误发生在最后,但它实际上发生在第一次访问时。

最佳答案

您可以在每次 session.saveOrUpdate 之后执行 session.flush() 来强制 hibernate 在数据库上执行更新或插入。如果没有刷新命令,实际的数据库操作将被推迟,并且只会在结束事务之前立即进行处理。

这样您就不必更改交易规模。

关于java - Hibernate中什么时候调用flush()和commit()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com