HTTP 파라미터로 넘어온 Entity의 ID(PK)로 Entity객체를 찾아서 바인딩하는 기능이다.
@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();
}
}
PathVariable로 받은 'id'를 이용해 직접 값을 조회하고 username을 반환한다.
@RestController
@RequiredArgsConstructor
public class MemberController {
private final MemberRepository memberRepository;
@GetMapping("/members/{id}")
public String findMember(@PathVariable("id") Member member) {
return member.getUsername();
}
}
HTTP요청은 회원 'id'를 받지만 중간에 도메인 클래스 컨버터가 동작하여 Member Entity를 반환한다.
도메인 클래스 컨버터도 Repository를 사용해서 Entity를 찾는다.
도메인 클래스 컨버터로 엔티티를 받으면 단순히 조회용으로만 사용해야한다.
트랜잭션이 없는 범위에서 엔티티를 조회했으므로, 엔티티를 변경해도 DB에 반영되지 않는다!
무슨 말인지 모르겠다면 Spring OSIV와 성능 최적화를 참고하자
domain class converter..