본문 바로가기
Programming/JPA & Spring Data JPA 기초

21. Spring Data JPA 시작하기

by JKROH 2023. 4. 6.
반응형
해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다.

* JPA를 쌩으로 사용하지는 않는다

  • Spring Boot와 Spring Data JPA를 조합해서 (거의) 설정 없이 JPA를 Spring에 연동해서 사용한다.
  • 자동 설정
    • persistence.xml
    • EntityManagerFactory 초기화
  • 스프링 연동
    • 스프링 트랜잭션 연동
    • EntityManager 연동

 

* 사용법

  • spring-boot-starter-data-jpa dependency를 추가한다.
    • 필요한 설정 자동 처리
  • JPA를 사용하기 위한 스프링 부트 설정을 진행한다.
  • Repository 인터페이스를 상속 받은 인터페이스를 엔티티 단위로  생성한다.
    • 또는 그 하위 인터페이스
  • 지정한 규칙에 맞게 메서드를 해당 인터페이스에 추가한다.
  • JPA를 사용한 DB 연동이 필요한 곳에 해당 인터페이스 타입을 주입해서 사용한다.

 

* spring-boot-starter-data-jpa dependency

  • Maven / Gradle 설정에 spring-boot-starter-data-jpa dependency를 추가한다.

 

* 스프링 부트 설정

  • 해당 예시에선 인메모리 RDBMS인 h2 데이터베이스를 사용한다.
  • 스프링 부트 버전에 따라 설정이 달라질 수 있으니 버전에 맞는 레퍼런스 문서를 참고해야한다.

 

* 엔티티 단위로 Repository 상속한 타입 추가

  • Repository 인터페이스
    • Spring Data JPA가 제공하는 특별한 타입이다.
    • 이 인터페이스를 상속한 인터페이스를 찾아가 자동으로 빈 객체를 생성한다.

 

* 규칙에 맞게 메서드 정의

  • save(), findBy**(), delete() 등 규칙에 맞게 메서드를 정의한다.

  • 이렇게만 정의해도 Repository가 만들어진다.

 

* Repository를 주입 받아 사용

  • saveUser() 메서드의 흐름을 살펴보자.
    • 주입 받은 userRepository에서 findById();를 통해 Optional User 객체를 찾아온다.
    • 해당 객체가 이미 존재하면 중복 회원이니 예외 처리한다.
    • 존재하지 않으면, 새로운 유저 객체를 생성한다.
    • userRepository의 save();를 통해 유저 객체를 저장한다.
  • 이 모든 과정이 아무것도 정의하지 않은 인터페이스 userRepository에서 벌어진 일이다.

 

* 정리

  • 정해진 규칙에 따라 인터페이스만 작성하면 된다.
반응형

댓글