쿼리

· JPA
하이버네이트와 EHCACHE 적용 하이버네이트와 EHCACHE(ehcache.org)를 사용해서 2차 캐시를 적용해보자. 하이버네이트가 지원하는 캐시는 크게 3가지가 있다. 엔티티 캐시 엔티티 단위로 캐시한다. 식별자로 엔티티를 조회하거나 컬렉션이 아닌 연관된 엔티티를 로딩할 때 사용한다. 컬렉션 캐시 엔티티와 연관된 컬렉션을 캐시한다. 컬렉션이 엔티티를 담고 있으면 식별자 값만 캐시한다.(하이버네이트 기능) 쿼리 캐시 쿼리와 파라미터 정보를 키로 사용해서 캐시한다. 결과가 엔티티면 식별자 값만 캐시한다.(하이버네이트 기능) 참고로 JPA 표준에는 엔티티 캐시만 정의되어 있다. 환경설정 build.gradle에 cache 라이브러리를 추가한다. dependencies { // https://mvnrepo..
· JPA
Spring Data JPA는 org.springframework.data.jpa.domain.Specification 클래스로 다양한 검색조건을을 조립해서 새로운 검색조건을 만들 수 있다. 본래에 JpaRepository 상속받을때 JpaSpecificationExecutor을 상속받으면 된다. public interface JpaSpecificationExecutor { T findOn(Specification spec); List findAll(Specification spec); Page findAll(Specification spec, Pageable pagaable); List findAll(Specification spec, Sort sort); long count(Specification ..
· JPA
객체지향 쿼리와 관련된 다양한 고급 주제를 알아보자. 벌크 연산 엔티티를 수정하려면 영속성 콘텍스트의 변경 감지 기능이나 병합을 사용하고, 삭제하려면 EntityManager.remove() 메서드를 사용한다. 하지만 이 밥벙으로 수백 개 이상의 엔티티를 하나씩 처리하기에는 시간이 너무 오래 걸린다. 이때 여러 건을 한 번에 수정하거나 삭제하는 벌크 연산을 사용하면 된다. // 재고가 10개 미만인 상품의 가격을 10% 상승 String sql = "UPDATE product p SET p.price = p.price * 1.1 WHERE p.stockAmount < :stockAmount"; int resultCount = em.createQuery(sql).setParameter("stockAmoun..
· Spring
Querydsl이란? Querydsl 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다. 단순 문자열과 비교해서 Fluent API를 사용할 때의 장점은 다음과 같다. Fluent API의 장점 IDE의 코드 자동 완성 기능 사용 문법적으로 잘못된 쿼리를 허용하지 않음 도메인 타입과 프로퍼티를 안전하게 참조할 수 있음 도메인 타입의 리팩토링을 더 잘 할 수 있음 Repository 구현 Querydsl을 사용하는 Repository를 구현할 때 JpaRepository와 함께 상속 해 하나의 Repository에서 JPA 와 Q..
· DDD
JPA에서 동적 쿼리를 위한 스펙 구현 JPA는 다양한 검색 조건 조합을 위해 CritetiaBuilder와 Predicate를 이용해서 검색 조건을 구현해야 한다. /* JPA 리포지터리를 위한 Specification 인터페이스 */ public interface Specification { Predicagte toPredicate(Root root, CriteriaBuilder cb); } /* 스펙 구현 */ public class OrdererSpec implements Specification { private String ordererId; public OrdererSpec(String ordererId) { this.ordererId = ordererId; } @Overridee publi..
beekei
'쿼리' 태그의 글 목록