会话工厂可以独立于 spring 事务使用吗

发布于 2024-12-11 23:10:16 字数 287 浏览 0 评论 0原文

作为这个问题的一部分:

在衍生线程中进行 Spring 事务

一个我想到的解决方案是将我的会话工厂作为普通 bean 并在 spring 事务之外使用它。然后只需在我的新线程中手动处理我的事务即可。

我的问题,这可能吗?到目前为止,它不允许我在春季事务之外对会话工厂执行任何操作。如果要分离它,我该怎么做?

as part of this question:

spring transactions in a spawned off thread

one solution im thinking of is grabbing my session factory as a normal bean and using that outside of spring transactions. then simply handle my transactions manually within my new thread.

my problem, is this possible? so far its not letting me do anything with the session factory outside of the spring transaction. if it is to detach it, how do i do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埖埖迣鎅 2024-12-18 23:10:17

如果您不想使用事务管理器,您可以调用以下命令来创建会话。

当您使用事务管理器时,并不意味着提交事务时所有 Hibernate 会话都会关闭!只有通过 sf.getCurrentSession() 获取的 Session 才会自动刷新并关闭。如果您决定使用 sf.openSession() 并自己管理会话,则必须对其进行刷新()和关闭()。因此,一个不太方便的替代方案,没有任何“当前”会话,是这样的:

Session session = sessionFactory.openSession();

这有更详细的解释这里

If you don't want to use the transaction manager you can call the below to create a session.

When you use transaction manager it does not mean that all Hibernate Sessions are closed when a transaction is committed! Only the Session that you obtained with sf.getCurrentSession() is flushed and closed automatically. If you decide to use sf.openSession() and manage the Session yourself, you have to flush() and close() it. So a less convenient alternative, without any "current" Session, is this:

Session session = sessionFactory.openSession();

This is explained in more detail here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文