인프런 커뮤니티 질문&답변

이도님의 프로필 이미지
이도

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

Transactional 문의 드립니다.

작성

·

147

0

안녕하세요

테스트 돌릴때는

 정상적으로 인서트 및 @Transactional를 활용한 롤백 등 의도 동작이 되는데

API의 JSON 형태로 던지면

javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call

의 경우가 발생 하는데 어떤 문제인지 힌트좀 주실 수 있을까요..

 EntityManagerFactory emf = Persistence.createEntityManagerFactory("unitname");
// EntityManager em = emf.createEntityManager();
// EntityTransaction tx = em.getTransaction();
// System.out.println("event Insert Start");

EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(event);
tx.commit();
em.close();

위 처럼 해당 Dao에서 엔티티매니저를 생성 해서 사용하면 커밋이 작동 하긴 합니다..

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이도님

JPA의 모든 데이터 변경은 트랜잭션 안에서 이루어져야 합니다. 그렇지 않으면 해당 오류가 발생합니다.

추가로 스프링 프레임워크에서 JPA를 사용할 때는 스프링이 제공하는 방식으로 JPA를 사용해야 합니다.

관련 내용은 활용1편을 참고해주세요^^

감사합니다.

이도님의 프로필 이미지
이도

작성한 질문수

질문하기