이 글을 쓰고 나면 몇 문장으로 요약 할 수 있습니다. Spring 자체에서 @Transactional을 사용하는 것과 같은 방법으로 CDI로 Spring-Data-JPA에서 트랜잭션을 관리 할 수 있습니까?스프링 데이터 JPA - 스프링 환경 대신 CDI 환경에서 @Transactional 사용
내가했던 첫 번째 일은 여기에 문서를 기반으로하는 스프링 데이터 JPA CDI를 설정했다.
http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/jpa.repositories.html#jpd.misc.cdi-integration 나는이를 설정하고 읽기 작업을 위해 잘 작동하지만, 작업
예를 들어, 문서에있는 이들의 예는 잘 작동 할 쓰기되지 않습니다.
List<Person> people = repository.findAll();
기본 설정이 완료되었습니다.
손으로 쓴 것이 오타 일 수 있습니다. 이것은 내가 실행 한 코드와 유사합니다. 그런 다음
@Inject
UserRepository userRepository;
User user;
@Transactional
public void signUpUserAction() {
userRepository.saveAndFlush(user);
}
나는 내가 @Transactional이 없었 실현이 오류를 먼저
Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress
를받을 그래서 나는 그것을 추가하고 여전히 작동하지 않았다. (나는 봄을 믿는 당신은을 사용할 필요가 그것은이 상자 밖으로 EE에서 작동하지 않습니다 의미가 있도록 AOP XML 파일은 @Transactional을 설정, 난 그냥 작동하도록하는 방법을 모르겠어요.)
가가 참고로이 함께 주석 이 작동하지 않습니다
@TransactionAttribute(TransactionAttributeType.REQUIRED)
내가이 게시물을 쓰는 동안 뭔가 해봤지만 일종의 작업을했는데 코드가 마음에 들지 않고 @Transactinoal 사용에 관심이 많다.이 코드는 더러워졌고, 나는 예쁘다. @Transactional은이 코드가 유효하지 않은 동안 깨끗한 방식으로 트랜잭션 방식 인 다른 메소드를 호출합니다.
저장하고 데이터베이스에 있는지 확인합니다.
@Inject
EntityManager em;
@Inject
UserRepository userRepository;
private User user;
public void signUpUserAction() {
em.getTransaction().begin();
userRepository.saveAndFlush(user);
em.getTransaction().commit();
}
간단히 말해, 트랜잭션을 관리하기 위해 @Transactional 또는 비슷한 것을 어떻게 사용할 수 있습니까?
도움 주셔서 감사합니다.
내가 말할 수있는 한 최선을 다해 봄 데이터는 여전히 스프링 빈을 사용하여 끝나기를 기대합니다. CDI로 작업하는 경우에도 마찬가지입니다. CDI 통합은 단순히 생산자 방법을 제공하는 것입니다. –