gpt4 book ai didi

spring - 如何在 Hibernate/Spring Data 中获取 @Transactional 注释使用的当前 session ?

转载 作者:行者123 更新时间:2023-12-04 03:10:31 24 4
gpt4 key购买 nike

我一直在使用数据源中的 Callable 语句执行存储过程。现在,此过程必须从在同一服务中的 SP 执行之前执行的插入查询中读取数据。所以这会产生一个问题,因为整个服务都包裹在 @Transactional 注释周围,并且仅在服务完成后才进行提交。那么,有什么方法可以获取当前@Transactional 注释的当前 session 。 SessionFactory 的 getCurrentSession 给了我一个不同的 session 。

最佳答案

我相信你的理解是正确的。
在@Transactional 上下文中,如果您调用 getCurrentSession() 方法,如果它不存在,它将创建新的 Session 对象或返回附加到当前事务的 Session。 OpenSession() 方法总是创建新的 session 。 @Transactional 帮助您扩展 session 的范围。

您可以通过调用以下方法来获取方法内部的当前 session (使用 @Transactional 注释)。当然,如果您想检索数据,则取决于隔离级别。

sessionFactory.getCurrentSession()

Session 在 getCurrentSession() 执行时第一次打开,在事务结束时关闭,在事务提交之前刷新。

在非事务上下文中,如果我们调用 getCurrentSession() 我们会得到一个异常。
并且默认传播是必需的,请确保您没有其他传播类型。

并且在您的配置类中使用以下注释,它可以启用它

@EnableTransactionManagement

关于spring - 如何在 Hibernate/Spring Data 中获取 @Transactional 注释使用的当前 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677472/

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