강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

fightnyy님의 프로필 이미지
fightnyy

작성한 질문수

실전! 스프링 데이터 JPA

Web 확장 - 도메인 클래스 컨버터

더티체킹

작성

·

227

0

 안녕하세요 학습을 진행하던 중 궁금한 사항이 생겨 질문드립니다. 다름이아니라 더티체킹에 관한것인데요 

 

```java

@Transaction

public User updateAuthority(String userName, UserRole new Role) {
 User user = userRepository.findByUserName(userName);

System.out.println("---변경 감지 시작 ---");

user.setRole(newRole);

System.out.println("---변경 감지 끝---");

return user;

}

아래와 같은 메소드를 실행시켜서 더티체킹이 언제 감지되나 실험해보았는데 보니까 return user를 하고 나서 실행되는거 같더라구요. 혹시 더티체킹이 끝나서 DB에 update 쿼리가 나가는 시점이 정확히 알 수 있을까요? 

수업 너무 감사합니다!

퀴즈

Spring Data JPA 리포지토리의 사용자 정의 메서드를 구현하는 주된 이유는 무엇일까요?

단순한 CRUD 연산을 수행하기 위해서입니다.

Spring Data JPA만으로는 구현하기 어려운 복잡한 쿼리나 JDBC/MyBatis 사용 등 특정 기술이 필요할 때 사용합니다.

Spring Data JPA가 제공하는 기본 메서드를 오버라이드하기 위해서입니다.

모든 리포지토리 메서드를 수동으로 구현하기 위해서입니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. fightnyy님

트랜잭션 커밋 시점에 더티체킹이 실행됩니다.

@Transaction 애노테이션이 있어서 트랜잭션 AOP가 실행됩니다.

따라서 메서드 리턴 시점에 트랜잭션이 커밋됩니다.

감사합니다.

fightnyy님의 프로필 이미지
fightnyy

작성한 질문수

질문하기