반응형
해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다.
* 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에서 벌어진 일이다.
* 정리
- 정해진 규칙에 따라 인터페이스만 작성하면 된다.
반응형
'Programming > JPA & Spring Data JPA 기초' 카테고리의 다른 글
23. 정렬, 페이징, @Query (0) | 2023.04.10 |
---|---|
22. 리포지터리 메서드 작성 규칙 (0) | 2023.04.07 |
20. 기타 AttributeConverter, @Formula, @DynamicUpdate(@DynamicInsert), @Immutable, @Subselect (0) | 2023.04.05 |
19. Criteria 소개 (0) | 2023.04.04 |
18. JPQL 소개 (0) | 2023.03.30 |
댓글