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

민정·2022년 12월 14일
0

Spring Data JPA

목록 보기
15/17
post-thumbnail

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

PathVariable 파라미터 : id

@RestController
@RequiredArgsConstructor
public class MemberController {

    private final MemberRepository memberRepository;

    // 파라미터 : id
    @GetMapping("/members/{id}")
    public String findMember(@PathVariable("id") Long id){
        
        Member member = memberRepository.findById(id).get();
        return member.getUsername();
    }
}

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

PathVariable 파라미터 : 엔티티

@RestController
@RequiredArgsConstructor
public class MemberController {

    private final MemberRepository memberRepository;

    // 파라미터 : Member 객체
    @GetMapping("/members2/{id}")
    public String findMember2(@PathVariable("id") Member member){ // 도메인 클래스 컨버터
        return member.getUsername();
    }
}

HTTP 요청은 pk를 받지만, 도메인 클래스 컨버터가 중간에 동작해서 엔티티 객체를 반환한다.

도메인 클래스 컨버터도 repository를 사용해서 엔티티를 찾는다.

🚨주의🚨
도메인 클래스 컨버터로 엔티티를 받았을 경우에는 단순 조회용으로만 사용해야한다.

트랜잭션이 없는 범위에서 엔티티를 조회했기 때문에 영속성 컨텍스트와 관련해서 애매한 상황이다. 따라서 엔티티의 값을 변경해도 DB에 반영되지 않는다.

강사님 말씀

간단한 경우에는 사용해도 되지만, 사용을 추천 드리지는 않는다.



출처

김영한 강사님 - 인프런 실전! 스프링 데이터 JPA

0개의 댓글