我有一个作为独立 java 应用程序的一部分运行的数据访问类。它目前正在工作,这意味着定义了事务管理器,但我想重构类以减少事务的范围,但如果我这样做了,我会得到org.hibernate.HibernateException: No Hibernate Session bound to thread,并且配置不允许在此处创建非事务性的,这意味着移动@Transactional以某种方式阻止了它被识别。
我的原始版本的重构方法是私有的,但我发现建议将其更改为公共,因为在某些情况下注释不会被拾取。
public class DoStuff {
@Transactional
public void originalMethod() {
// do database stuff
...
// do non-database stuff that is time consuming
...
}
}
我想要做的是重构以下
public class DoStuff {
public void originalMethod() {
doDatabaseStuff()
doNonDatabaseStuff()
}
@Transactional
public void doDatabaseStuff() {
...
}
public void doNonDatabaseStuff() {
...
}
}