Spring Framework/SpringBoot

[SpringBoot] java.lang.IllegalStateException: Transaction not active

Razelo 2021. 6. 19. 09:04

JPA를 사용중에 이런 에러를 마주할 수 있다. 

 

persistence.xml에서 <property name="hibernate.hbm2ddl.auto" value="update"/> 가 문제라고 추정해서 

 value를 create로 바꿔보기도 했는데 역시나 소용없었다. 

 

잘 보면 JPAClient라는 내 39번째 코드에 commit()을 사용한 코드가 있는데, 

그 코드가 문제가 발생한거다. 

 

근데 왜  문제가 발생했냐면 Transaction not active.... 라고 한다. 왜 트랜잭션이 시작이 안됬다고 할까?

 

나는 분명 위에서 tx.begin()이라는 코드를 통해서 실행을 시켰는데?

 

곰곰히 생각해보았다. 무엇이 문제가 될 수 있는지. 

 

코드 상에서 

tx.begin()을 한번 했고

 

이후에

tx.commit()

tx.commit()

즉 두번을 해줬다. 

 

이게 문제가 될 수 있을까? 

 

그래서 tx.commit()두개의 구문 사이에서 tx.begin()을 해주었다. 

 

그랬더니 아주 잘 출력이 되었다.

 

이를통해 알게 된건 commit을 하기 위해서는 반드시 앞에 begin이 와야한다는거다. 알고 있었지만 그냥 먼저 선언된게 아니라 쌍으로 묶여서 개수를 맞춰줘야 한다는거다. commit을 위해서 한번 했으면 그 다음 코드에서는 반드시 또 begin을 해줘야만 commit을 할 수 있게 되는거다. 어느 코드에서는 begin중복없이 그냥 계속 commit하라고 되어있던데 내가 잘못본거거나 그 분 코드가 틀렸거나 내 기억이 온전치 못하거나 셋 중 하나다. 

 

반응형