일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Greedy
- AOP
- JDBC
- spring
- 자바
- 김영한
- kotlin
- SpringBoot
- jpa
- 스프링 핵심 기능
- java
- JPQL
- QueryDSL
- Exception
- 그리디
- springdatajpa
- 인프런
- 스프링
- transaction
- Servlet
- pointcut
- db
- 알고리즘
- Thymeleaf
- Proxy
- 백준
- Android
- Spring Boot
- http
- 스프링 핵심 원리
- Today
- Total
목록인프런/[인프런] QueryDsl (28)
개발자되기 프로젝트
1. QuerydslRepositorySupport EntityManager 주입해줌. Querdsl 유틸리티 클래스 : Helper instance to ease access to Querydsl JPA query API. from절부터 시작 가능. @Repository public abstract class QuerydslRepositorySupport { private final PathBuilder builder; private @Nullable EntityManager entityManager; private @Nullable Querydsl querydsl; 2. from절부터 시작 바로 from부터 시작. select를 마지막에 //from절부터 시작. List result = from(me..
해당 기능은 제약이 커서 실무에서 사용하기에는 현실적으로 어려움..ㅜㅜ 1. 인터페이스 지원 : QuerydslPredicateExecutor Repository가 QuerydslPredicateExecutor을 상속받으면 메서드에 Querydsl에서 사용하는 조건을 넘겨줄 수 있다. @Test public void querydslPredicateExecutorTest(){ Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member member1 = new Member("member1", 10, teamA); Member member2 = new Member("membe..
1. Controller개발 @GetMapping("/v2/members") public Page searchMemberV2(@ModelAttribute MemberSearchCondition condition, Pageable pageable){ return memberRepository.searchPageSimple(condition, pageable); } @GetMapping("/v3/members") public Page searchMemberV3(@ModelAttribute MemberSearchCondition condition, Pageable pageable){ return memberRepository.searchPageComplex(condition, pageable); } Query..
1. CountQuery 최적화 PageableExecutionUtils.getPage(content, pageable, () -> ~.fetchCount()) CountQuery를 날릴려면 fetchCount()가 호출 되어야 함. PageableExecutionTuils.getPage()를 통해 count 쿼리가 생략 가능한 경우는 Countquery 생략 페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때 마지막 페이지 일 때 (offset + 컨텐츠 사이즈를 더해서 전체 사이즈 구함) @Override public Page searchPageComplex(MemberSearchCondition condition, Pageable pageable) { //content를 바로 가져오고. L..
1. SpringData Paging 활용 스프링 데이터의 Page, Pageable을 활용해보자. 전체 카운트를 한번에 조회하는 단순한 방법 데이터 내용과 전체 카운트를 별도로 조회하는 방법 2. 인터페이스에 두 가지 기능 추가 public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); Page searchPageSimple(MemberSearchCondition condition, Pageable pageable); Page searchPageComplex(MemberSearchCondition condition, Pageable pageable); } 3. 전체 카운트를 한번에 조회하는 단순한 방법 s..
1. SpringDataJPA 적용 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 2. 사용자 정의 Repository Querydsl을 사용하려면 사용자 정의 Repository 사용 필요함. 사용자 정의 리포지토리 사용법 사용자 정의 인터페이스 작성 사용자 정의 인터페이스 구현 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 MemberRepository 가 MembeRepositoryCustom을 상속 받기 때문에 search() 사용 가능. spring 에서 자동으로 구현체 매핑해줌. 2.1 MemberRepository public interface Member..
데이터 확인을 위해서 샘플 데이터를 추가하자. 테스트케이스 실행에 영향을 주지 않기 위해 톰캣이 돌아갈 때만 샘플 데이터가 들어가도록 설정하자. --> 테스트케이스, 톰캣의 프로파일 분리 1. 프로파일 설정 main.resources.application.yml test.resources.application.yml 2. 샘플 데이터 추가 @Profile 을 통해 application.yml의 active와 대응됨. @PostConstruct : bean 생성 이후 해당 메서드 실행. JPA 데이터 변경은 Transaction안에서 이루어져야함 @Profile("local") @Component @RequiredArgsConstructor public class InitMember { private fi..
1. Builder @Data public class MemberTeamDto { private Long memberId; private String username; private int age; private Long teamId; private String teamName; public MemberTeamDto() { } @QueryProjection public MemberTeamDto(Long memberId, String username, int age, Long teamId, String teamName) { this.memberId = memberId; this.username = username; this.age = age; this.teamId = teamId; this.teamName..