Spring Data JPA - Web 확장-도메인 클래스 컨버터

2022. 7. 31. 22:33·공부/JPA
반응형

출처 : 인프런 실전! 스프링 데이터 JPA

Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다.

 

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

  • HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩하는 기능이다.

 

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

  • MemberController.class
@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();
    }

    @PostConstruct
    public void init() {
        memberRepository.save(new Member("userA"));
    }
}

코드 작성 후 애플리케이션을 실행하고 브라우저에 주소를 입력하고 userA의 값을 확인한다.

 

도메인 컨버터 사용 후

  • MemberController.class
@GetMapping("/members2/{id}")
public String findMember2(@PathVariable("id") Member member) {
    return member.getUsername();
}

놀랍게도 위의 코드가 끝이다. 이렇게 코드를 작성하면 아래 과정을 스프링 데이터 JPA가 알아서 컨버팅을 끝내고 파라미터에 인젝션을 해주는 것이다.

Member member = memberRepository.findById(id).get();

  • HTTP 요청은 회원 id를 받지만 도메인 클래스 컨버터가 중간에 동작해서 회원 엔티티 객체를 반환한다.
  • 도메인 클래스 컨버터도 리파지토리를 사용해서 엔티티를 찾는다.
  • 도메인 클래스 컨버터로 엔티티를 파라미터로 받으면, 이 엔티티는 단순 조회용으로만 사용해야 한다.
    • 트랜잭션이 없는 범위에서 엔티티를 조회했으므로 변경 감지 등이 일어나지 않는다.
! 사실 이 기능을 잘 사용하진 않는다. PK를 이용해서 처리를 하는 것도 그렇고 복잡한 기능이면 사실상 쓰질 못하기 때문이다.
반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/JPA' 카테고리의 다른 글
  • Spring Data JPA - 스프링 데이터 JPA 구현체 분석
  • Spring Data JPA - Web 확장-페이징과 정렬
  • Spring Data JPA - Auditing
  • Spring Data JPA - 사용자 정의 리포지토리 구현
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    방통대
    인프런
    SpringBoot를 이용한 RESTful Web Service 개발
    알고리즘
    프로그래머스
    MSA
    토비의스프링부트
    Spring
    springboot
    스프링부트
    코딩테스트
    자바스크립트
    백준
    전자정부프레임워크
    Java
    IT
    oracle
    RESTful
    개발자
    egov
    JPA
    기출문제
    운영체제
    토이프로젝트
    SQL
    프론트엔드
    에러해결
    넥사크로
    react
    QueryDSL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
Spring Data JPA - Web 확장-도메인 클래스 컨버터
상단으로

티스토리툴바