확장 기능
사용자 정의 리포지토리 구현
스프링 데이터 JPA 리포지토리: 인터페이스만 정의하고 구현체는 스프링이 자동 생성
JPA 직접 사용( EntityManager )
스프링 JDBC Template 사용
MyBatis 사용
Querydsl 사용
데이터베이스 커넥션 직접 사용
등의 이유로 다른 리포지토리를 구현하고 싶다면?
1. 커스텀 리포지토리 인터페이스 정의 & 구현체 클래스 생성
2. 스프링 데이터 JPA 리포지토리 -> 커스텀 리포지토리 인터페이스 상속 (인터페이스는 다중 상속 가능)
3. 스프링에 의해 자동 생성된 리포지토리에서 커스텀 메서드 호출 가능
*사용자 정의 리포지토리 규칙*
인터페이스 이름: 규칙 없음 (아무거나)
구현체 클래스 이름:
스프링 데이터 JPA 리포지토리 인터페이스 + "Impl"
사용자 정의 리포지토리 인터페이스 + "Impl" (스프링 데이터 2.x 부터. 더 직관적.
이 경우 여러 인터페이스를 분리해서 구현하는 것도 가능)
참고: 항상 사용자 정의 리포지토리가 필요한 것은 아니다. 그냥 임의의 리포지토리를 만들어도 된다. 예를들어 MemberQueryRepository를 인터페이스가 아닌 클래스로 만들고 스프링 빈으로 등록해서 그냥 직접 사용해도 된다. 물론 이 경우 스프링 데이터 JPA와는 아무런 관계 없이 별도로 동작한다.
=> 핵심 비지니스 로직 리포지토리와 API(화면)를 위한 리포지토리를 분리하고, 동적 쿼리가 포함된 복잡한 쿼리는 굳이 JPA 인터페이스+커스텀 하지 않고 직접 리포지토리 클래스를 구현(쿼리 작성)하는 것이 나을 수도 있다.
Auditing
엔티티를 생성, 변경할 때 변경한 사람과 시간을 추적하고 싶으면?
등록일, 수정일, 등록자, 수정자
운영에서 테이블 단위로 기본적으로 적용시키는 기능
'Advance I > Spring Data JPA' 카테고리의 다른 글
| 22.07.06 (0) | 2022.07.06 |
|---|---|
| 22.07.04 (0) | 2022.07.04 |
| 22.07.01 (0) | 2022.07.01 |
| 22.06.30 (0) | 2022.06.30 |
| 22.06.28 :: 실전! 스프링 데이터 JPA (0) | 2022.06.30 |