Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드업
- JPA
- 스프링부트
- 로드밸런서
- 클라우드 컴퓨팅
- 카프카
- Spring
- 클라우드
- 백준
- springboot
- Spring Data JPA
- Elasticsearch
- gcp
- 스프링
- 백트래킹
- 알고리즘
- Kafka
- 쿠버네티스
- 스프링 부트
- Spring Boot
- aws
- 인천여행
- Apache Kafka
- DFS
- 월미도
- 프로그래밍문제
- 오일러프로젝트
- VPC
- 자료구조
- Docker
Archives
- Today
- Total
GW LABS
스프링 부트 핵심 가이드 (6) - Spring Data JPA 활용 본문
8.2 JPQL
- 엔티티 객체를 대상으로 수행하는 쿼리 언어
- ex) SELECT p FROM Product p WHERE p.number = ?1;
8.3 쿼리 메서드 살펴보기
- 쿼리 메서드의 생성
- 주제(Subject)와 서술어(Predicate)로 쿼리를 생성
- ‘By’를 통해 서술어의 시작을 나타낸다.
- ex) List<Person> findByLastnameAndEmail(String lastName, String email);
- 쿼리 메서드의 주제 키워드
- find..By
- read..By
- get..By
- query..By
- search..By
- stream..By
- exists..By: 특정 데이터의 존재여부
- count..By: 쿼리 결과로 나온 레코드의 개수
- delete..By, remove..By: 삭제 쿼리를 수행
- First<number>, Top<number>: 조회된 결과값의 개수를 제한
- ex) findFirst5ByName, findTop10ByName
- 쿼리 메서드의 조건자 키워드
- Not: 값의 불일치 조건
- Null, NotNull: 값이 null인지 검사
- True, False: boolean 타입으로 지정된 컬럼값 확인
- And, Or: 여러 조건을 묶을 때 사용
- GreaterThan, LessThan, Between: 비교 연산
- StartingWith, EndingWith, Containing, Like: 쿼리의 Like 검색
8.4 정렬과 페이징 처리
- 정렬 처리하기
- OrderBy 사용으로 정렬을 수행할 수 있음
- ex) findByNameOrderByAsc
- 매개변수를 활용하여 정렬할 수도 있음
- ex) findByName(”test”, Sort.by(Order.asc(”price”)))
- OrderBy 사용으로 정렬을 수행할 수 있음
- 페이징 처리
- 페이징 처리를 위해 Page와 Pageable을 사용
- ex) findByName(”test”, PageRequest.of(0, 2))
- 페이징 처리를 위해 Page와 Pageable을 사용
8.5 Query 어노테이션 사용하기
- 매퍼에서와 같이 쿼리를 직접 사용할 수도 있다.
8.6 QueryDSL 적용하기
- 위의 Query 어노테이션의 한계는 컴파일 시점에 SQL 구문오류를 잡을 수 없다는 점이다.
- QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있도록 지원하는 프레임워크이다.
- 장점
- IDE 코드 자동 완성 기능 사용가능
- 문법적으로 잘못된 쿼리를 허용하지 않음
- 고정된 SQL 쿼리를 작성하지 않아 동적으로 쿼리 생성 가능
- 가독성 및 생산성
- 도메인 타입과 프로퍼티를 안전하게 참조할 수 있음
- 사용법
- 의존성 추가
- APT 플러그인 추가
- compile 단계 수행
- Q도메인 쿼리 타입 클래스를 참조하여 QueryDSL 작성
- QuerydslPredicateExecutor, QuerydslRepositorySupport
- Repository에서 QueryDSL을 사용하기 쉽게 만들어주는 인터페이스 및 추상클래스
8.7 JPA Auditing 적용
- 엔티티 클래스에 공통적으로 들어가는 생성 일자, 변경 일자와 같은 필드들을 자동으로 생성
- EnableJpaAuditing 추가하여 활용할 수 있음
- BaseEntity 만들기
- BaseEntity는 엔티티에 공통으로 들어가게 되는 필드를 하나의 클래스로 관리하는 기법
- MappedSuperclass: JPA의 엔티티 클래스가 상속받을 경우 자식 클래스에게 매핑 정보를 전달하는 어노테이션
- EntityListeners: 엔티티를 데이터베이스에 적용하기 전후로 콜백을 요청할 수 있게하는 어노테이션
- AuditingEntityListner: 엔티티의 Auditing 정보를 주입하는 JPA 엔티티 리스너 클래스
- CreatedDate: 데이터 생성 날짜를 자동으로 주입하는 어노테이션
- LastModifiedDate: 데이터 수정 날짜를 자동으로 주입하는 어노테이션
'Book-Review > Programing' 카테고리의 다른 글
스프링 부트 핵심 가이드 (8) - 유효성 검사와 예외처리 (0) | 2022.08.18 |
---|---|
스프링 부트 핵심 가이드 (7) - 연관관계 매핑 (0) | 2022.08.17 |
스프링 부트 핵심 가이드 (5) - 테스트 코드 작성하기 (0) | 2022.08.15 |
스프링 부트 핵심 가이드 (4) - 데이터베이스 연동 (0) | 2022.08.13 |
스프링 부트 핵심 가이드 (3) - API를 작성하는 다양한 방법 (0) | 2022.08.12 |
Comments