
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에 반영되지 않는다.
강사님 말씀
간단한 경우에는 사용해도 되지만, 사용을 추천 드리지는 않는다.