스프링 데이터 JPA-22.Query by Example
스프링 데이터 JPA: Query by Example
QBE는 필드 이름을 작성할 필요 없이(뻥) 단순한 인터페이스를 통해 동적으로 쿼리를 만드는 기능을 제공하는 사용자 친화적인 쿼리 기술입니다. (감이 1도 안잡히는거 이해합니다.. 코드를 봐야 이해하실꺼에요.)
스프링 데이터 JPA-21.Specifications
스프링 데이터 JPA: Specifications
에릭 에반스의 책 DDD에서 언급하는 Specification 개념을 차용 한 것으로 QueryDSL의 Predicate와 비슷합니다.
스프링 데이터 JPA-20.EntityGraph, Projection
스프링 데이터 JPA: EntityGraph
-쿼리 메소드 마다 연관 관계의 Fetch 모드를 설정 할 수 있습니다.
스프링 데이터 JPA-19.Update 쿼리 메소드
스프링 데이터 JPA: Update 쿼리 메소드
쿼리 생성하기
- find…
- count…
- delete…
- 흠.. update는 어떻게 하지?
스프링 데이터 JPA-18.Named Parameter과 SpEL
스프링 데이터 JPA: Named Parameter과 SpEL
스프링 데이터 JPA-17.쿼리 메소드, Sort
스프링 데이터 JPA: 쿼리 메소드
쿼리 생성하기
- https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation
- And, Or
- Is, Equals
- LessThan, LessThanEqual, GreaterThan, GreaterThanEqual
- After, Before
- IsNull, IsNotNull, NotNull
- Like, NotLike
- StartingWith, EndingWith, Containing
- OrderBy
- Not, In, NotIn
- True, False
- IgnoreCase
스프링 데이터 JPA-16.Repository, Repository.save() 메소드
스프링 데이터 JPA: JPA Repository
@EnableJpaRepositories
- 스프링 부트 사용할 때는 사용하지 않아도 자동 설정 됨.
- 스프링 부트 사용하지 않을 때는 @Configuration과 같이 사용.
스프링 데이터 JPA-15.HATEOAS, Common 마무리(스프링 데이터 Common:Web)
스프링 데이터 Common: Web 4부: HATEOAS
Page를 PagedResource로 변환하기
- 일단 HATEOAS 의존성 추가 (starter-hateoas)
- 핸들러 매개변수로 PagedResourcesAssembler
스프링 데이터 JPA-14.DomainClassConverter, Pageable과 Sort 매개변수(스프링 데이터 Common:Web)
스프링 데이터 Common: Web 2부: DomainClassConverter
스프링 Converter
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/convert/converter/Converter.html
- Formatter…?
스프링 데이터 JPA-13.웹 지원 기능 소개(스프링 데이터 Common:Web)
스프링 데이터 Common: Web 1부: 웹 지원 기능 소개
스프링 데이터 웹 지원 기능 설정
- 스프링 부트를 사용하는 경우에.. 설정할 것이 없음. (자동 설정)
- 스프링 부트 사용하지 않는 경우?
@Configuration @EnableWebMvc @EnableSpringDataWebSupport class WebConfiguration {}
스프링 데이터 JPA-12.QueryDSL(스프링 데이터 Common)
스프링 데이터 Common: QueryDSL
findByFirstNameIngoreCaseAndLastNameStartsWithIgnoreCase(String firstName, String lastName) … 너무 길다..
스프링 데이터 JPA-11.도메인 이벤트(스프링 데이터 Common)
스프링 데이터 Common: 도메인 이벤트
도메인 관련 이벤트를 발생시키기
스프링 데이터 JPA-10.커스텀 리포지토리, 기본 레포지토리 커스터마이징(스프링 데이터 Common)
스프링 데이터 Common: 커스텀 리포지토리
쿼리 메소드(쿼리 생성과 쿼리 찾아쓰기)로 해결이 되지 않는 경우 직접 코딩으로 구현 가능.
- 스프링 데이터 리포지토리 인터페이스에 기능 추가.
- 스프링 데이터 리포지토리 기본 기능 덮어쓰기 가능.
- 구현 방법
- 커스텀 리포지토리 인터페이스 정의
- 인터페이스 구현 클래스 만들기 (기본 접미어는 Impl)
- 엔티티 리포지토리에 커스텀 리포지토리 인터페이스 추가
스프링 데이터 JPA-09.쿼리 만들기 개요 및 실습,비동기 쿼리(스프링 데이터 Common)
스프링 데이터 Common: 쿼리 만들기 개요
스프링 데이터 저장소의 메소드 이름으로 쿼리 만드는 방법
- 메소드 이름을 분석해서 쿼리 만들기 (CREATE)
- 미리 정의해 둔 쿼리 찾아 사용하기 (USE_DECLARED_QUERY)
- 미리 정의한 쿼리 찾아보고 없으면 만들기 (CREATE_IF_NOT_FOUND)
스프링 데이터 JPA-08.Null 처리하기(스프링 데이터 Common)
스프링 데이터 Common: Null 처리하기
스프링 데이터 2.0 부터 자바 8의 Optional 지원.
- Optional
findById(Long id);
스프링 데이터 JPA-07.Repository 인터페이스 정의하기(스프링 데이터 Common)
스프링 데이터 Common: Repository 인터페이스 정의하기
Repository 인터페이스로 공개할 메소드를 직접 일일히 정의하고 싶다면 (다 받지 말고 쓰는 것만 직접 선언)
스프링 데이터 JPA-06.리포지토리(스프링 데이터 Common)
구분 | 설명 |
---|---|
스프링 데이터 | SQL & NoSQL 저장소 지원 프로젝트의 묶음. |
스프링 데이터 Common | 여러 저장소 지원 프로젝트의 공통 기능 제공. |
스프링 데이터 REST | 저장소의 데이터를 하이퍼미디어 기반 HTTP 리소스로(REST API로) 제공하는 프로젝트. |
스프링 데이터 JPA | 스프링 데이터 Common이 제공하는 기능에 JPA 관련 기능 추가. |
스프링 데이터 JPA-05.스프링 데이터 JPA 원리
스프링 데이터 JPA 원리
JpaRepository<Entity, Id> 인터페이스
- 매직 인터페이스
- @Repository가 없어도 빈으로 등록해 줌.
스프링 데이터 JPA-04.Fetch, 쿼리
JPA 프로그래밍 6. Fetch
연관 관계의 엔티티를 어떻게 가져올 것인가? 지금(Eager)? 나중에(Lazy)?
- @OneToMany의 기본값은 Lazy
- @ManyToOne의 기본값은 Eager
스프링 데이터 JPA-03.관계 매핑, 엔티티 상태와 Cascade
JPA 프로그래밍 4. 관계 매핑
스프링 데이터 JPA-02.세팅 및 엔티티, Value 타입 맵핑
JPA 프로그래밍 1. 프로젝트 세팅
스프링 데이터 JPA-01.관계형 데이터베이스와 자바, ORM
관계형 데이터베이스와 자바
JDBC
- DataSource / DriverManager
- Connection
- PreparedStatement