Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- T-OTP
- OpenStack
- REACT
- SWAGGER
- SpringRESTDocs
- openapi3
- Spring Batch
- UsernamePasswordAuthenticationFilter
- Crawling
- MFA
- SpringBoot
- Pender
- preventdefault
- 리액트
- cloud native
- axios
- Flyway
- Filter
- Spring REST Docs
- stopPropogation
- JavaScript
- cheerio
- MSA
- vue
- AuthenticatoinProvide
- vuejs
- tasklet
- gradle
- Reduxpender
- Spring Security
Archives
- Today
- Total
Miracle Morning, LHWN
6. Spring Data JPA 본문
Spring Data JPA
스프링 프레임워크에서 JPA 를 편리하게 사용할 수 있도록 지원하는 프로젝트이다. 인터페이스만 작성하면 실행 시점에서 구현 객체를 동적으로 생성해서 주입해주기 때문에 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발이 가능하다.
# 주요 메서드
- save(S) : 새로운 엔티티는 저장, 기존 엔티티는 수정한다.
- 엔티티에 식별자가 없으면 새로운 엔티티로 판단해서 EntityManager.persist() 를 호출,
- 엔티티에 식별자가 있으면 EntityManager.merge() 를 호출
- delete(T) : 엔티티 하나를 삭제한다. EntityManager.remove() 를 호출한다.
- findOne(ID) : 엔티티 하나를 조회한다. EntityManager.find() 를 호출한다.
- getOne(ID) : 엔티티를 프록시로 조회한다. EntityManager.getReference() 를 호출한다.
- findAll(...) : 모든 엔티티를 조회한다. 정렬이나 페이징 조건을 파라미터로 제공할 수 있다.
# 쿼리 메서드
인터페이스에 메서드만 선언하면 해당 메서드의 이름으로 적절한 JPQL 을 생성해서 실행하는 기능이다.
- 메서드 이름으로 쿼리 생성
- 메서드 이름으로 JPA NamedQuery 호출
- @Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의
- nativeQuery = true 로 지정하면 네이티브 쿼리 사용 가능
- 파라미터 바인딩 시 JPQL 은 1 부터, Native SQL 은 0부터 시작하니 주의
@Query("SELECT user FROM User user where user.createdAt between ?1 to ?2")
List<User> getUserByCreatedAt(Date from, Date to);
@Query(value="SELECT user FROM Users user WHERE user.userType = ?0 and user.name = ?1",
nativeQuery = true)
List<User> findbyUserTypeAndName(UserTypeEnum userTypeEnum, String name);
- 페이징, 정렬
- Sort / Pagable
Page<User> findAllById(Long id, Pagable pagable);
List<User> findByName(String name, Pagable pagable);
- 명세 : 데이터 검색을 위한 조건들의 집합
- 사용자 정의 리포지토리 구현
- 웹 확장
- 도메인 클래스 컨버터 기능 : HTTP 파라미터로 넘어오는 엔티티 아이디로 엔티티 객체를 찾아 바로 바인딩 해주는 기능
- 페이징과 정렬 기능
출처 : fastcampus.co.kr/courses/204729/clips/
'IT 기술 > [JAVA] Spring Boot' 카테고리의 다른 글
8-1. 프로젝트에서 JPA 직접 사용해보기 (0) | 2021.05.08 |
---|---|
7. 트랜잭션 (0) | 2021.05.07 |
5. 객체지향 쿼리언어_2 (0) | 2021.05.06 |
4. 객체지향 쿼리언어_1 (0) | 2021.05.06 |
3. 프록시와 연관관계 (0) | 2021.05.05 |
Comments