[Spring Data JPA] 공통 인터페이스
기존에는 JPA를 사용해 원하는 기능을 하나하나 작성해 줘야 했지만, Spring Data JPA기술을 사용하면 개발을 훨씬 편하게 할 수 있다.
단순하게 인터페이스를 만들고 JpaRepository 클래스를 상속받는것만으로도 Spring Data JPA의 기능을 사용할 수 있다.
그런데 구현체가 아닌 인터페이스를 사용하는데 어떻게 기능을 사용할 수 있을까?
Spring Data JPA는 인터페이스를 통해 구현체를 만들고 주입해준다.
애플리케이션이 로딩될 때 개발자가 만들어놓은 인터페이스를 보고 구현 클래스를 만드는 방식으로 작동한다. (프록시)
개발자는 JpaRepository 클래스의 제네릭스만 적당히 설정해주면 Spring Data JPA의 기능을 사용할 수 있고, 인터페이스에는 @Repository 애너테이션 생략할 수 있다.
Spring Data JPA 기술에 대해 좀 더 자세히 알아보자.
Spring Data JPA 기술은 객체지향 개념을 잘 활용한 기술으로, 여러 계층 구조로 이루어진다.
일단 기술 이름에 JPA가 들어간다. 뭔가 JPA에 특화된 기술이라는 느낌이 오지 않는가?
CrudRepository, PagingAndSortingRepository.. CRUD나 Paging Sort기능은 여러 데이터베이스에서 거의 비슷한 로직으로 사용된다.
따라서 이런 기술들은 상위 계층으로 설정해놓는다.
하위 계층으로는 JPA, NOSQL등 여러 데이터베이스 관련 기술들이 위치한다.
즉, 공통으로 사용되는 로직들은 공통 인터페이스로 따로 빼서 사용하고, 각각의 데이터베이스에 특화된 기능은 하위 계층으로 설정하는 방식으로 작동한다.
JpaRepository는 JPA에 특화된 기능들을 제공한다.
save / delete / findById / getOne ... 등 여러 메서드를 제공해 기본적인 기능을 사용할 수 있고, 도메인에 특화된 기능처럼 공통으로 제공하기 어려운 기능들은 따로 처리해 줘야 한다.
'Spring > Spring Data JPA' 카테고리의 다른 글
[Spring Data JPA] 내부 동작 원리 (0) | 2023.01.03 |
---|---|
[Spring Data JPA] 사용자 정의 리포지토리와 확장 기능 (0) | 2023.01.03 |
[Spring Data JPA] 벌크 연산과 EntityGraph (0) | 2023.01.02 |
[Spring Data JPA] 쿼리 메서드와 페이징 (0) | 2023.01.02 |
댓글
이 글 공유하기
다른 글
-
[Spring Data JPA] 내부 동작 원리
[Spring Data JPA] 내부 동작 원리
2023.01.03 -
[Spring Data JPA] 사용자 정의 리포지토리와 확장 기능
[Spring Data JPA] 사용자 정의 리포지토리와 확장 기능
2023.01.03 -
[Spring Data JPA] 벌크 연산과 EntityGraph
[Spring Data JPA] 벌크 연산과 EntityGraph
2023.01.02 -
[Spring Data JPA] 쿼리 메서드와 페이징
[Spring Data JPA] 쿼리 메서드와 페이징
2023.01.02