transaction 2

[JPA사용중] TransactionRequiredException: Executing an update/delete query 에러 발생/ 트랜잭션이란?

굉장히 간단한 에러이다. 근데 로직이 틀린게 아닌데 왜 에러가 날까 싶을거다. update나 delete 구문을 실행할때 @Transactional 어노테이션을 달아주지 않으면 발생하게 되는 에러이다. 이렇게 @Transactional 을 달아주면 에러가 나지 않는다. @Transactional 이 하는 기능도 굉장히 직관적인데 디비를 공부했다면 트랜잭션이 무엇인지 알것이다. 기억을 더듬어보자. @Transactional 은 이 어노테이션이 붙은 메서드의 경우 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다는 뜻이다. 전체 작업을 취소한다? 데이터베이스를 배웠다면 기억이 날텐데, 우리가 B라는 사람에게 돈을 보냈는데 갑자기 중간에 은행이 번개를 맞아서(ㅋㅋ) 실제로 내가 보낸..

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

JPA를 사용중에 이런 에러를 마주할 수 있다. persistence.xml에서 가 문제라고 추정해서 value를 create로 바꿔보기도 했는데 역시나 소용없었다. 잘 보면 JPAClient라는 내 39번째 코드에 commit()을 사용한 코드가 있는데, 그 코드가 문제가 발생한거다. 근데 왜 문제가 발생했냐면 Transaction not active.... 라고 한다. 왜 트랜잭션이 시작이 안됬다고 할까? 나는 분명 위에서 tx.begin()이라는 코드를 통해서 실행을 시켰는데? 곰곰히 생각해보았다. 무엇이 문제가 될 수 있는지. 코드 상에서 tx.begin()을 한번 했고 이후에 tx.commit() tx.commit() 즉 두번을 해줬다. 이게 문제가 될 수 있을까? 그래서 tx.commit()두..

반응형