Я начал изучать возможность использования JpaTemplate для удаления некоторого кода котельной пластины в некоторых моих приложениях.
У меня сейчас что-то вроде этого:
public class SomeDaoClass {
public SomeDaoClass( boolean handleTransactionsLocally ) {
_handleTransactionsLocally = handleTransactionsLocally;
}
private void persist( final Object object ) throws MyCustomException {
try {
if ( _handleTransactionsLocally ) {
EntityTransaction transaction = getEntityManager().getTransaction();
transaction.begin();
getEntityManager().persist( object );
transaction.commit();
}
else {
getEntityManager().persist( object );
getEntityManager().flush();
}
}
catch ( Exception exception ) {
throw new MyCustomException( exception );
}
}
}
При запуске из модульного теста я переопределяю getEntityManager()
и предоставляю true для конструктора. При развертывании этого на сервере я просто возвращаю внедренный менеджер сущностей из контейнера.
Однако, похоже, что я должен быть в состоянии сделать что-то вроде этого:
_jpaTemplate = new JpaTemplate( getEntityManager() );
_jpaTemplate.persist( object );
Как я могу указать в коде Java, как jpaTemplate
должен обрабатывать транзакции? Я попытался аннотировать метод с помощью @Transactional
, но это не похоже на работу. Нужно ли устанавливать свойство на _jpaTemplate
? Это вообще возможно?
ТИА