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