작성
·
206
·
수정됨
0
비슷한 질문이 올라왔는데 질문의 의도와 답변 내용이 불일치하는 것 같아 다시 한번 질문드리겠습니다.
@Transactional(readonly=false)는 테스트 후에 자동으로 롤백되는 기본 동작을 방지하기 위해(즉 커밋되도록 하기 위해) 사용됩니다. 이전 강의에서 JUnit 테스트 시 데이터를 변경한 결과를 DB에서 확인하고자 할 때 이 설정을 사용한 것으로 기억합니다.
@Transactional은 기본적으로 rollback=true가 디폴트이므로 @Transactional + @Commit은 @Transactional(readonly=false) 같은 의미라고 볼 수 있을까요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
Jaesang Yoon님의 질문에 대해 관련 정보를 찾았습니다. 질문에서 언급한 @Transactional
과 @Commit
의 사용과 관련하여, 말씀하신 것처럼 Spring 프레임워크에서 @Transactional 어노테이션은 기본적으로 트랜잭션의 롤백 여부를 제어합니다. 이 때, rollback=true
는 트랜잭션이 성공적으로 완료되더라도 변경 사항을 롤백(취소)하라는 의미인 반면, rollback=false
는 트랜잭션이 성공적으로 완료될 경우 변경 사항을 커밋하라는 것을 의미합니다.
실제로 유사한 질문에 대해 다른 사용자가 제기한 질문과 이에 대한 답변을 참고하는 것이 도움이 될 수 있습니다.
@Transactional
에 rollback=false
를 설정하는 것과 @Commit
을 사용하는 것이 동일한 결과를 초래한다는 것을 의미합니다.따라서, Jaesang Yoon 님의 이해와 동일하게 @Transactional
+ @Commit
의 조합은 @Transactional(rollback=false)
와 같은 의미로 볼 수 있습니다. 이 설정은 주로 테스트 환경에서 실제 데이터베이스에 변경 사항을 반영하여 결과를 확인하고자 할 때 사용됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Transactional의 readonly 옵션에 대해 질문하려했는데 제가 잘못 적어뒀네요 ^^; 본문 수정하겠습니다!