해결된 질문
작성
·
384
·
수정됨
0
모든 강의를 듣고 따라하면서 재미나게 실습했습니다.
그 중에서
롤백테스트할 때
jakarta.transaction.Transactional
또는
org.springframework.transaction.annotation.Transactional
의
@Transactional
만을 사용하면 정상동작합니다.
그런데,
org.springframework.transaction.annotation.Transactional
@Transactional(readOnly = true)
readOnly = true 를 사용하여 테스트를 하면 insert 가 진행되지 않을 것을 예상했는데 진행이 되었습니다.
왜 그런지 궁금합니다.
그리고,
인프런안의 Kotlin 강좌중 추천할만한 강의가 있을까요?
어제 유튜브에서 최근의 건강에 대해서 언급하셨는데,
건강하고 늘 행복하게 보내세요.
답변 1
2
@Transactional의 readOnly 엘리먼트는 JDBC의 readonly 플래그 설정 기능을 사용하게 해줍니다.
그런데 모든 데이터베이스의 모든 드라이버가 다 readonly 모드를 지원하지 않습니다. Readonly는 일종의 힌트 정보인데 이걸 DB나 드라이버의 읽기 전용 기능으로 강제하는 경우도 있지만 이를 지원하지 않는 DB도 있습니다.
예제에서 사용한 H2 데이터베이스에서는 어떻게 적용되는지 제가 따로 확인해보지 않았지만 readOnly를 true해도 쓰기 기능이 에러가 나지 않고 동작한다면 아마도 예제에서 사용하는 H2 Database의 내장형 메모리 DB 모드에서는 readOnly를 직접 지원하지 않는 것으로 보입니다.
아~~!
그렇군요.
감사합니다.