是否可以使用 Hibernate + Spring 对以下内容进行建模。
我使用 Spring TransactionTemplate,它同时执行 session + 事务生命周期范围。
原因是有时我在业务流程中有几个阶段,我想在每个阶段完成后提交。但是我想继续使用相同的持久对象。如果我每个事务都有一个单独的 session ,那么我会收到暂时/分离的异常,因为原始 session 已关闭。
这可能吗?
最佳答案
是的,Hibernate 的 session 可以开始并提交多个事务。您需要做的是将打开的 session 存储在某处,然后重用它。请注意,Session 不是线程安全的对象,但如果您确定它不会有并发问题,您只需使用 TransactionSynchronizationUtils
将 session 绑定(bind)到线程资源然后在需要的时候解绑,你可以找到一个例子here或者您可以查看 OSIV 及其标准实现。
这是一个非常复杂的事情,它会容易得多,因此最好立即关闭 session 并且不要重复使用它,因为它可能会带来麻烦:
关于java - 单个 hibernate session 中的多个事务(使用 Spring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13531122/
相关文章:
spring - jar 如何在使用它的 Web 应用程序中传播漏洞?
spring - 如何在运行时将新用户添加到 Spring Security
java - Spring WS : How to get and save XSD validat
java - 使用spring boot(安全)和keycloak启用角色身份验证?
java - Spring 验证与 Hibernate 验证
java - 使用具有不同 AuthenticationProviders 的多个 WebSecur
java - Spring Security 3 - 总是返回错误 302
java - 在 Spring Hibernate java 项目中使用 "Envers"审计表