Spring 141

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

8. Scrolling대규모 결과 집합을 작은 청크 단위로 처리할 수 있음 모든 결과를 메모리에 로드 X (효율적으로 처리)기능설명Window스크롤링 중 반환되는 청크 - 정보: 현재 청크 데이터 + 위치 정보ScrollPosition스크롤링 작업에서 특정 위치를 나타내기 위한 객체- Offset-based특정 오프셋 위치부터 데이터를 가져옴- Keyset-based키셋 기반으로 데이터를 가져옴 - non-nullable 정렬 속성 사용Scrolling Type - Offset-basedDB에서 전체 결과를 물리화 ✅- 특정 오프셋 위치부터 데이터를 잘라서 반환- Keyset-basedDB에서 전체 결과를 물리화 ❌- 인덱스를 활용하여 데이터를 반환- 오프셋 기반의 단점을 보완 예제) ScrollPosi..

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

4. Using @Queryrepository에 JPQL 쿼리 직접 선언도메인 클래스로부터 쿼리 로직 분리 예제더보기public interface UserRepository extends JpaRepository { @Query("SELECT u FROM User u WHERE u.lastname = :lastname") List findByLastname(@Param("lastname") String lastname);} @Paramquery method's named parameterparameter name 자동 탐지 제공 예제더보기public interface UserRepository extends JpaRepository { @Query("select u from User u ..

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

1. Query Lookup StrategiesDerived Query메서드 이름 기반 자동 생성 예제) Derived Query더보기List findByFirstnameStartingWith(String prefix);List findByLastnameEndingWith(String suffix);List findByEmailContaining(String infix);List findByDescriptionNotContaining(String text);@EnableJpaRepositories(escapeCharacter = '\\')이스케이프 설정: like 쿼리 인수가 와일드카드 문자 포함 시 필요 Declared Query명시적 정의Annotation쿼리 타입정의 위치컴파일 시점쿼리 종류특징@N..

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

7. Paging, Iterating Large Results, Sorting & Limiting대규모 데이터 세트를 효율적으로 조회 및 처리ConceptDescriptionUsagePaging페이징 정보 전달Pageable 매개변수 사용 (페이지 번호, 정렬 기준, 조회 결과 수)Page와 Slice 반환 타입 사용Sorting정렬 기준을 전달하는 매개변수Sort 매개변수 사용- 정렬 기준 설정 가능 (ascending(), descending())Limiting조회 결과 수를 제한하는 방법Top, First 키워드, Limit 매개변수 사용 예제) Paging더보기Page findByLastname(String lastname, Pageable pageable);Slice findByLastname(..

[자바 ORM 표준 JPA 프로그래밍] 10-3. 객체지향 쿼리 언어: QueryDSL

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. QueryDSLJava에서 쿼리를 생성할 수 있게 해주는 오픈소스 프레임워크 특징항목설명타입 안전성자바 코드 기반- 컴파일 시점에 타입 체크유연성동적 쿼리 생성- 주어진 조건에 따라 동적으로 JPQL 쿼리를 생성하여 실행함Fluent APIMethod Chaining 방식- 직관적이고 가독성이 높은 쿼리 작성다양한 지원다양한 데이터베이스 및 기술 지원 (SQL, JPA, MongoDB, Lucene 등) 예시) 타입 안전성더보기@Test@Transactionalvoid type_safety() { QUser user = QUser.user; JPAQuery query = new JPAQuery(entityMa..

[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..

[자바 ORM 표준 JPA 프로그래밍] 8. 프록시와 연관관계 관리

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. 프록시엔티티를 조회할 때, 연관된 엔티티를 항상 사용하는 것은 아닙니다.모든 연관관계를 한꺼번에 가져오게 될 경우, 성능이 떨어질 수 있습니다. 프록시항목설명목적연관 엔티티를 실제 사용할 때까지 DB 조회를 지연(Lazy Loading)프록시 객체실제 클래스를 상속받아 만들어진 가짜 객체실제 객체의 참조를 보관- 프록시 객체의 메소드를 호출하면 실제 객체의 메소드를 호출 (데이터베이스 조회 지연 목적)초기화영속성 컨텍스트에 의해 초기화됨한 번만 초기화되고 재사용됨내부에 실제 객체(target) 참조식별자 활용프록시는 식별자(ID)만 저장된 상태로 생성됨식별자 접근은 초기화 없이 가능ex) 상세 정보가 필요 없는 경우 I..