SpringBoot 트랜잭션 직접 다루기

2023. 3. 29. 14:42· Spring
목차
  1. 1. No Persistence provider for EntityManager named Hi
  2. 2. SpringBoot 트랜잭션 직접 다루기

1. No Persistence provider for EntityManager named Hi

부트를 사용하지 않을 때는 META-INF 내부의 persistence.xml 파일의 unit-name과 persistenceUnitName을 서로 매칭 시켜주면 되지만 부트는 persistence.xml 파일 자체가 없습니다.(자동으로 설정)

 

스프링 부트 없이 다음과 같은 접근으로 EntityManagerFactory를 직접 사용하려고 하면  

"Exception in thread "main" jakarta.persistence.PersistenceException: No Persistence provider for EntityManager named Hi" 와 같은 에러가 발생합니다

EntityManagerFactory emf = Persistence.createEntityManagerFactory("Hi");
EntityManager em = emf.createEntityManager();
 
EntityTransaction entityTransaction = em.getTransaction();

 

 

2. SpringBoot 트랜잭션 직접 다루기

아래와 같이 코드를 작성하면 에러가 발생합니다. @Transactional을 사용하라는 뜻인데 이를

"java.lang.IllegalStateException: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead"

 

    @Autowired
    private EntityManager em;

    @GetMapping("/")
    public String success(){

        EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        
        ======================= 메인로직 ======================
        
        transaction.commit();
        return "success";
    }

제가 원한 것은 트랜잭션을 직접 이용하는 것이어서 해결책을 찾던 도중 다음과 같은 방법으로 해결했습니다

    @PersistenceUnit
    private EntityManagerFactory emf;
    

    @GetMapping("/")
    public String success(){
        EntityManager em = emf.createEntityManager();

        EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        
        ======================== 메인 로직 ============================
        
        transaction.commit();
        return "success";
    }

 

 

'Spring' 카테고리의 다른 글

@AllArgsConstructor 사용 지양에 따른 리팩토링  (1) 2023.04.19
테스트 단 @Transactinal 롤백  (5) 2023.03.30
SpringBoot3.0 Entity생성오류  (0) 2023.03.30
jwt인증 403(forbidden)에러  (1) 2023.03.08
HttpSecurity와 WebSecurity차이  (0) 2023.02.27
  1. 1. No Persistence provider for EntityManager named Hi
  2. 2. SpringBoot 트랜잭션 직접 다루기
'Spring' 카테고리의 다른 글
  • 테스트 단 @Transactinal 롤백
  • SpringBoot3.0 Entity생성오류
  • jwt인증 403(forbidden)에러
  • HttpSecurity와 WebSecurity차이
Seung__Yong
Seung__Yong
Seung__Yong
기록
Seung__Yong
전체
오늘
어제
  • 분류 전체보기 (40)
    • Git (2)
    • Web (0)
    • Spring (13)
    • Java (3)
    • 영상리뷰 (0)
    • CS (0)
    • PS (0)
    • Project (7)
      • Bidderown (5)
      • WithFestival (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • git rebase 유의사항
  • 실시간 알림
  • git충돌
  • 커버링 인덱스
  • 네이버 클라우드 플랫폼
  • Intellij
  • ControllerAdvice
  • noOffset
  • @Rollback
  • @allargsconstructor
  • git rebase
  • 권한 검증
  • SSR
  • rebase conflict
  • GlobalException
  • SpringBootTest
  • BCryptPasswordEncoer 동작원리
  • @SpringBootTest
  • WithUserDetails
  • BCrypt
  • intellij git conflict
  • 로그인 AOP적용
  • 리베이스 충돌 해결
  • covering index
  • @PreAuthorize() 예외처리
  • RefreshToken 탈취 감지
  • NCP
  • @Transactional
  • SessionRegistry
  • 조회수 중복 방지

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Seung__Yong
SpringBoot 트랜잭션 직접 다루기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.