gpt4 book ai didi

java - 在 Spring 类中获取 Hibernate 事务

转载 作者:搜寻专家 更新时间:2023-10-30 20:46:35 24 4
gpt4 key购买 nike

我正在开发一个使用 Spring 并使用 TransactionInterceptor 透明地获取 Hibernate 事务的程序。这使得说“当从某个其他类调用此方法时,将其包装在一个事务中(如果它尚未在一个事务中)”变得非常方便。

但是,我有一个类需要尝试写入并且必须立即查明它是否成功。虽然无论如何我都想要两种方法,但我希望有一种方法可以将它们放在同一个类中,而无需在程序上显式创建事务。实际上,我想要这样的东西:

public void methodOne() {
//..do some stuff
try {
transactionalMethod();//won't do what I want
} catch(OptimisticLockingFailure e) {
//..recover
}
}

@Transactional
public void transactionalMethod() {
//...do some stuff to database
}

不幸的是,据我所知,这是行不通的,因为我只是直接调用 transactionalMethod。有没有办法让 Spring 为我调用一个本地方法,并在需要时将其包装在一个事务中,或者它是否必须在我连接到这个类的另一个类中?

最佳答案

定义一个类实现的接口(interface),它执行transactionalMethod();使用依赖注入(inject)将类的值设置为它自己的实现;在您的 bean 工厂中,允许 Spring 围绕该接口(interface)实现插入一个 Around 方面。这应该可以满足您的需求。

关于java - 在 Spring 类中获取 Hibernate 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826442/

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