일부 응용 프로그램에서 JpaTemplate을 사용하여 보일러 플레이트 코드를 제거 할 수 있는지 알아보기 시작했습니다. 단위 테스트에서 실행하면 Java에서 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()
을 무시하고 생성자에 충실 제공 :
내가 지금 이런 일이있다. 이것을 서버에 배포하면 주입 된 엔티티 관리자를 컨테이너에서 반환하기 만하면됩니다.
그러나, 나는이 대신 같은 것을 할 수있을 것 같아 :
_jpaTemplate = new JpaTemplate(getEntityManager());
_jpaTemplate.persist(object);
은 어떻게 jpaTemplate
트랜잭션을 처리하는 방법을 자바 코드에서 지정할 수 있습니까? 나는 @Transactional
으로 메소드에 주석을 달았지만이 방법은 효과가없는 것 같습니다. _jpaTemplate
에 속성을 설정해야합니까? 이것은 가능한가?
TIA
외에도@Transactional
을 추가하는
그러나 applicationContext.xml 없이는이 작업을 수행 할 수있는 방법이 있습니까? 그게 내가 여기서 운전하는거야. – javamonkey79
에는 applicationContext.xml이 있습니다. 그리고 물건을 추가하지 않고도 선언적 트랜잭션을 수행 할 수는 없습니다. – Bozho
applicationContext.xml이 없습니다. JdbcTemplate 클래스와 같은 방식으로 JpaTemplate을 사용하려고합니다. – javamonkey79