노트 정리/Spring Data JPA 4

[Spring Data JPA] 나머지

Specifications (명세) 도메인 주도 설계(Domain Driven Design - 책)에는 Specification(명세)라는 개념을 소개한다. 스프링 데이터 JPA는 JPA Criteria를 활용해서 이 개념을 사용할 수 있도록 지원해준다. Criteria는 JPQL 작성을 쉽게 도와주는 빌더 클래스다. 자바 코드 기반이므로 컴파일 시점에서 문법 오류를 체크 가능하다. 단, 사용이 복잡하여 실무에서 직관적으로 사용하기 힘들다. 명세를 이해하기 위한 키워드는 술어(predicate)이다. 술어 - 사전 1. (언어학) 서술어 2. (논리학) 논리의 판단·명제에 있어서 주사(主辭)에 대하여 긍정 또는 부정의 입언(立言)을 하는 개념. JPA에서 술어란 다음과 같다. 참 또는 거짓으로 평가 A..

[Spring Data JPA] 확장

사용자 정의 레포지토리 Spring Data JPA만을 사용해 Repository interface를 만들어 사용하게 되면 구현체는 Spring이 생성하므로 편리하지만 몇 가지 기능을 직접 구현하고 싶을 때는 개발자가 interface에 상속받는 `JpaRepository`의 모든 기능을 구현해주어야 하는 애로사항이 생긴다. JPA를 직접 사용하고 싶거나, 스프링 JDBC Temlate을 직접 사용하고 싶거나 MyBatis를 사용하거나 데이터베이스 커넥션을 직접 사용하는 등의 상황에서 구현체를 직접 만들고 싶을 때 사용자 정의 레포지토리를 사용할 수 있다. 사용자 정의 레포지토리 작성 사용자 정의 레포지토리를 만들기 위해서는 다음과 같은 구조로 작성해야한다. 먼저, 사용자 정의 메서드 작성을 위한 int..

[Spring Data JPA] 쿼리

쿼리 메서드 Spring Data JPA에서 지원하는 강력한 기능이다. 개발자가 작성하는 간단한 쿼리들은 단순히 interface에 메서드 이름만 규칙에 맞게 명명하면 사용할 수 있다. public interface MemberRepository extends JpaRepository { public List findByUsernameAndAgeGreaterThan(String username, int age); public List findTop3SomethingBy(); } 실제 구현은 스프링이 해주게 되고 실행 시점에서 오타 혹은 실제 property가 없는 등의 이슈들을 미리 확인해서 안전한 개발을 할 수 있다. 인자가 많아짐에 따라 메서드 명이 길어진다는 단점은 있지만 인자가 적은 경우에는 쿼리..

[Spring Data JPA] 개요

Spring Data JPA Spring Data JPA는 data commons와 data jpa로 이루어져 있다. ORM이므로 DB 종류에 따라 특화된 구현체가 따로 있고 Spring Data JPA는 즉 JPA에 관련된 인터페이스들을 모아놓은 것이다. JPA이외에도 Redis, mongoDB 등의 패키지가 있다. 공통 인터페이스 상속 구조 Spring Data JPA에서는 JpaRepository를 extends하여 공통 인터페이스를 작성할 수 있도록 하는데 이는 org.springframework.data.jpa 패키지에 소속된 인터페이스이다. 또한, JpaRepository가 상속 받는 인터페이스들은 org.springframework.data:spring-data-commons에 소속된 인터페..