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 | 29 | 30 | 31 |
Tags
- Spring Cloud Netfilx Eureka
- zipkin
- thread
- Resilinece4j
- 알고리즘
- Java
- 생산자 소비자 패턴
- saga pattern
- 멀티스레드
- JPA
- 타입스크립트
- MSA
- 배치
- Spring Boot Actuator
- Serial GC
- The law of Demeter
- 체인 패턴
- java 정렬
- 디자인패턴
- Parallel Old GC
- 디자인 패턴
- spring batch
- 스프링 배치
- spring cloud
- TypeScript
- 스레드
- Action Pattern
- 키클락
- 사가 패턴
- Transaction Pattern
Archives
- Today
- Total
PSD( Private-Self-Development )
JPA 의 쿼리 작성 라이브러리 본문
JPA의 지원 쿼리
JPQL
- 테이블이 아닌 객체 지향 쿼리
- SQL을 추상화하여 특적 DB SQL 의존도 x
- 동적 쿼리 사용 부적합
List<Member> memberList = em.createQuery( "select m From Member m Where m.name like '%hello%' ", Member.class ).getResultList();
JPA Criteria
- 동적 쿼리 지원
- jpql 의 함수 버전
- 단, 가시성이 떨어지고 복잡해진다. => 유지보수성 저하
- 쿼리가 잘못 된 경우, 컴파일 오류가 나기 때문에 좋다.
//Criteria 사용 준비
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Member> query = cb.createQuery(Member.class);
Root<Member> m = query.from(Member.class);
query.select(m).where(cb.equal(m.get("username"), “kim”));
List<Member> resultList = em.createQuery(cq).getResultList();
QueryDSL
- JPA Criteria 의 상위 호환
- 유지 보수성 의 증가
- 이거 쓰자..
네이티브 sql
- 특정 DB에 의존하는 쿼리 혹은 기능 사용 시 사용
String sql = “SELECT ID, AGE, TEAM_ID, NAME FROM MEMBER WHERE NAME = ‘kim’;
List<Member> resultList = em.createNativeQuery(sql, Member.class).getResultList();
JDBC API
- 영속성 컨텍스트를 적절한 시점에 강제로 플러시 필요
왜 쿼리 작성이 필요 한가?
- 조회 조건
- 엔티티 객체를 대상으로 조회를 지원하는게 좋다.
- jpa 특성상 대부분의 DB 종류에 적용될 쿼리가 필요.
참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'Backend > JPA' 카테고리의 다른 글
OSIV( Open Session In View ) 성능 최적화 (0) | 2022.12.12 |
---|---|
JPA 조회 성능 최적화 (0) | 2022.12.01 |
JPA 값 타입 (0) | 2022.10.14 |
JPA 의 프록시, 지연 로딩, 즉시 로딩 (0) | 2022.10.12 |
JPA 의 상속 (0) | 2022.10.11 |