Spring/Spring Data JPA 17

[Spring Data JPA] 3-1. Defining Query Methods (2)

4. Repository Methods Returning Collections or IterablesStreamable스트림을 제공하는 인터페이스Iterable을 확장스트림을 비병렬로 처리할 수 있게 함. (filter(), map() 등의 스트림 메서드 사용 가능)예제더보기interface PersonRepository extends Repository { Streamable findByFirstnameContaining(String firstname); Streamable findByLastnameContaining(String lastname);}Streamable result = repository .findByFirstnameContaining("av") .and(repos..

[Spring Data JPA] 3-1. Defining Query Methods (1)

1. Query Lookup Strategies@EnableJpaRepositories (queryLookupStrategy)queryLookupStrategy 옵션설명CREATE_IF_NOT_FOUND (기본값)선언된 쿼리(@Query 등)이 있으면 사용하고, 없으면 메서드 이름 기반으로 쿼리 생성CREATE무조건 메서드 이름 기반으로 쿼리 생성 (어노테이션 선언 무시)USE_DECLARED_QUERY선언된 쿼리(@Query 등)만 사용, 없으면 애플리케이션 시작 시 예외 발생 2. Query CreationQuery Builder 기반 생성메서드 이름을 추론하여 JPQL Query를 생성합니다. Parsing Query Method Name요소설명예시subject쿼리 목적 (메서드 도입부)find, ..

[Spring Data JPA] 3-7. Repository query keywords

1. Supported query method subject keywordsfind…Byread…Byget…Byquery…Bysearch…Bystream…ByGeneral query method - can be used in combination with additional keywordsReturn type: the repository type- Collection, Streamable subtype, result wrapper (Page, GeoResults, store-specific)exists…ByExists projectionReturn type: booleancount…ByCount projectionReturn type: booleandelete…Byremove…ByDelete que..

[Spring Data JPA] 2-2. Transactionality

1. 기본 트랜잭션 설정SimpleJpaRepositoryCrudRepository의 실제 구현체CRUD 메서드의 트랜잭션 설정 담당읽기 작업의 경우, 트랜잭션 설정의 readOnly 플래그는 true로 설정됩니다.그 외의 모든 작업은 @Transactional로 설정됩니다. (기본 트랜잭션 설정이 적용되도록) 2. 트랜잭션 설정 커스터마이징특정 저장소 메서드의 트랜잭션 설정 조정Method Override (+@Transactional 설정)더보기public interface UserRepository extends CrudRepository { @Override @Transactional(timeout = 10) public List findAll(); // Further query metho..

[Spring Data JPA] 2-1. Configuration

1. Annotation-based ConfigurationJPA를 사용하기 위한 주요 구성 요소를 어노테이션으로 정의합니다.구성 요소설명@EnableJpaRepositoriesSpring Data JPA의 리포지토리를 스캔하여 활성화하는 어노테이션.Repository 인터페이스에 대한 구현체를 프록시 형태로 제공EntityManagerFactoryEntityManager 인스턴스를 생성하고 관리- JPA 구현체 생성 시 사용하는 기본 인터페이스.- LocalContainerEntityManagerFactoryBeanEntityManagerFactory를 설정하고 관리- Spring과 JPA를 통합 (Spring 예외 처리 통합)JpaTransactionManagerEntityManager와 통합하여 트..

[Spring Data JPA] 1. Core concepts

1. Repository 인터페이스Spring Data의 중심 인터페이스입니다.개념설명마커 인터페이스- 객체의 특정 성질을 표시하기 위해 사용- 타입 정보만을 포착하고 식별하는 데 사용 (메서드 정의 ❌)쿼리 메서드 자동 생성메서드 이름을 분석하여 자동으로 적절한 쿼리를 생성해줌Spring Data JPASpring Data JPA는 Repository 인터페이스를 자동으로 구현하여 CRUD 작업을 제공합니다. 코드) Repository더보기@Indexedpublic interface Repository { } 타입 인자T: 도메인 클래스ID: 도메인 클래스의 식별자 타입 예제) 쿼리 메서드 자동 생성더보기interface UserRepository extends CrudRepository { l..