У меня есть класс доступа к данным, который работает как часть автономного java-приложения. В настоящее время он работает, что означает, что диспетчер транзакций определен, но я хочу реорганизовать класс, чтобы уменьшить объем транзакции, но если я это сделаю, я получаю org.hibernate.HibernateException: No Hibernate Session привязан к потоку и конфигурации не позволяет создавать нетранзакционные здесь, что подразумевает, что перемещение @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() {
...
}
}