본문 바로가기

Spring/JPA

Spring JPA - 쿼리 조회 전략 1. XML configuration: query-lookup-strategy 속성을 통해 네임스페이스에서 전략을 구성 2. Java configuration: Enable${store}Repositories 주석의 queryLookupStrategy 속성을 사용 CREATE 쿼리 메서드 이름에서 저장소별 쿼리를 구성하려고 시도한다. 일반적인 접근 방식은 메소드 이름에서 잘 알려진 접두사 세트를 제거하고 나머지 메소드를 구문 분석하는 것이다. 쿼리 생성에 대한 자세한 내용은 "쿼리 생성"을 참조. USE_DECLARED_QUERY 선언된 쿼리를 찾으려고 시도하고 찾을 수 없으면 예외 throw 쿼리는 어딘가에 어노테이션으로 정의되거나 다른 방법으로 선언될 수 있다. 해당 저장소에 대해 사용 가능한 옵션을.. 더보기
Spring JPA - 쿼리 메서드 정의 리포지토리 접근은 메소드 이름으로부터 저장소별 쿼리를 얻는 2가지 방법이 있다. 1. 메서드 이름에서 직접 쿼리를 파생 2. 수동으로 정의된 쿼리 사용 실제 저장소에 따라 사용 가능한 옵션이 다름 그러나 실제 쿼리를 만들 지 결정하는 전략이 있어야 함 더보기
Spring JPA - 다양한 스프링 데이터 모듈과 함께 리포지토리 사용하기 다양한 스프링 데이터 모듈과 함께 리포지토리 사용하기 정의된 모든 리포지토리 인터페이스가 Spring Data 모듈에 바인딩됨 고유한 Spring Data 모듈을 사용하면 작업이 간단해짐 때때로 2개 이상 Spring 모듈을 사용하게 됨 리포지토리 지속성 기술을 구별해서 정의해야함 여러 리포지토리를 감지하면 Spring Data는 엄격한 저장소 구성 모드가 됨: 저장소 또는 도메인 클래스에 대한 세부 정보를 사용하여 리포지토리 정의에 대한 Spring Data 모듈 바인딩을 결정함 1. 모듈별로 특정한 리포지토리를 확장하여(상속받아)정의하면 특정 모듈은 유효함 -> 모듈별로 다른 리포지토리 사용가능 2. 도메인 클래스에 모듈별로 특정한 어노테이션을 달면 그 특정 모듈은 유효함 -> 써드파티 어노테이션(J.. 더보기
Spring JPA - 리포지토리 정의 1. 리포지토리 인터페이스 정의 1) 도메인 클래스별 리포지토리 인터페이스 정의 2) 인터페이스는 Repositoy를 확장(상속 받음) 3) 만약 CRUD 메서드를 노출하려면 CrudRepository를 확장(상속 받음) 2. 리포지토리 정의 미세 조정 1) 일반적으로 Repository 또는 CrudRepository 또는 PagingAndSortingRepository를 상속 받음 2) @RepositoryDefinition 어노테이션: Spring Data 인터페이스를 확장하지 않기 3) CrudRepository: Entity 조작을 위한 완전한 메서드 세트를 노출 @NoRepositoryBean // 이 어노테이션은 중간 리포지토리 인터페이스에 붙임, 붙이면 런타임에 인스턴스를 생성하지 않음 i.. 더보기
Spring JPA - 쿼리 방법 1. 리포지토리 인터페이스 선언 // 1. Repository 또는 하위 interface 중 하나를 확장하는 interface 선언, 처리해야하는 interface PersonRepository extends Repository { List findByLastname(String lastname); // 2. interface에서 쿼리 메서드 선언 } 2. 인터페이스 접근 인스턴스를 생성하기 위한 Spring 설정: JavaConfig 또는 XML 구성 // Java 구성: 아래와 유사한 클래스 만들기 import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @EnableJpaRepositories // 어노테이션을 달아서.. 더보기
Spring JPA - Spring data 저장소로 작업하기, 핵심 개념 1. The central interface in the Spring Data repository abstraction is Repository. It takes the domain class to manage as well as the ID type of the domain class as type arguments. This interface acts primarily as a marker interface to capture the types to work with and to help you to discover interfaces that extend this one. The CrudRepository interface provides sophisticated CRUD functionality .. 더보기