작성
·
161
0
안녕하세요 영한님 ! 영한님의 로드맵 첫번째를 거의 마무리하고,jpa 로드맵도 추가적으로 일부 수강하고 있는 학생입니다.
이젠 이전의 설명을 조금 더 완벽하게 이해할 수 있을 것 같기도 하고 세세한 내부 작동원리를 다시 보고싶어 복습을 하고 있습니다.
영한님의 강의를 복습하며 간단한 RESTapi 프로젝트를 스프링 데이터 jpa를 이용해 만들던 도중, 트랜잭션에 대해 궁금증이 생겨 질문 남깁니다!
1) JPA에서는 지금 강의처럼 수동으로 의존성을 주입해주거나 @Transactional 이라는 애노테이션을 사용하여 하나의 entity manager 주기(?) 가 발생하는데 스프링 데이터 JPA는 상속을 받은 부모 클래스의 메소드에 Transactional이 달려있어 따로 이 주기를 관리 하지 않는 것인지 궁금합니다!
2) 그렇다면 메서드를 사용할때마다 transaction이 발생하여 더티체킹이 이뤄질 수 없는 조건인 건가요? 로그를 찍어보니 스프링 데이터 jpa로 update 로직을 만들때 인스턴스의 값을 set하고 따로 save를 날려야 isNew를 판단하고 update쿼리가 날아가는 것 같더라구요!
얕지만 지금까지 배운대로 혼자 생각해본다면 이정도 이유일것이라고 생각이 드는데, 혹시 틀린 부분이 있다면 가르침 부탁드립니다.
p.s : 개발 경력이 정말 짧지만 영한님 덕분에 주변에서 좋은 이야기를 많이 듣고 있어 정말 감사할따름입니다!
답변 1
2
안녕하세요. steadyJay님
생각하신 내용이 맞습니다.
스프링 데이터 JPA를 사용하더라도 더티체킹을 사용하려면 서비스 계층에 트랜잭션을 적용해주어야 합니다.
감사합니다.
감사합니다!