HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩

 

도메인 클래스 컨버터 사용 전

@RestController
@RequiredArgsConstructor
public class MemberController {
 private final MemberRepository memberRepository;
 @GetMapping("/members/{id}")
 public String findMember(@PathVariable("id") Long id) {
 Member member = memberRepository.findById(id).get();
 return member.getUsername();
 }
}

 

도메인 클래스 컨버터 사용 후

@RestController
@RequiredArgsConstructor
public class MemberController {
 private final MemberRepository memberRepository;
 @GetMapping("/members/{id}")
 public String findMember(@PathVariable("id") Member member) {
 return member.getUsername();
 }
}

HTTP 요청은 회원 id 를 받지만 도메인 클래스 컨버터가 중간에 동작해서 회원 엔티티 객체를 반환
도메인 클래스 컨버터도 리파지토리를 사용해서 엔티티를 찾음

주의: 도메인 클래스 컨버터로 엔티티를 파라미터로 받으면, 이 엔티티는 단순 조회용으로만 사용해야 한다. 
(트랜잭션이 없는 범위에서 엔티티를 조회했으므로, 엔티티를 변경해도 DB에 반영되지 않는다.)

 

 

 

출처 : 김영한 JPA 스프링 데이터 강의

'JPA > JPA-Spring Data' 카테고리의 다른 글

스프링 데이터 JPA 구현체 분석  (0) 2022.07.22
Web 확장 - 페이징과 정렬  (0) 2022.07.22
Auditing  (0) 2022.07.21
사용자 정의 리포지토리 구현  (0) 2022.07.21
JPA Hint & Lock  (0) 2022.07.21
복사했습니다!