일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pointcut
- 김영한
- SpringBoot
- JDBC
- QueryDSL
- 자바
- Greedy
- Spring Boot
- AOP
- 스프링
- java
- 그리디
- Exception
- spring
- jpa
- 알고리즘
- Servlet
- http
- Proxy
- springdatajpa
- JPQL
- 스프링 핵심 기능
- Thymeleaf
- transaction
- 백준
- 인프런
- Android
- 스프링 핵심 원리
- db
- kotlin
- Today
- Total
목록paging (7)
개발자되기 프로젝트
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. 도메인 클래스 컨버터 HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩해줌 쉽게말해 @Pathvariable로 id를 받으면 스프링이 id를 가지고 엔티티를 바인딩함. findMember : id를 파라미터로 받아 직접 member를 찾아옴. fimdMember2 : id를 파라미터로 받으면 스프링이 member와 바인딩함. @GetMapping("/members/{id}") public String findMember(@PathVariable("id") Long id){ Member member = memberRepository.findById(id).get(); return member.getUserName(); } @GetMapping("/members2/{id}") p..
1. SpringDataJpa 스프링에서 페이징 기능을 표준화 시켰다 ㄷㄷㄷ 2. 페이징, 정렬 파라미터 org.springframework.data.domain.Sort : 정렬 기능 org.springframework.data.domain.Pageable : 페이징 기능 (내부에 Sort 포함) data.jpa가 아니다 즉, DB에 관계없이 적용이 가능한다. 3. 특별한 반환 타입 org.springframework.data.domain.Page : 추가 count 쿼리 결과를 포함하는 페이징 TotalCount 가져오는 쿼리는 자동으로 날라감. org.springframework.data.domain.Slice : 추가 count 쿼리 없이 다음 페이지만 확인 가능 (내부적으로 limit + 1조회..
1. JPA 의 페이징 JPA에서 페이징 하는 방법 조건 검색 조건 : 나이 10살 정렬 조건 : 이름으로 내림차순 페이징 조건 : 첫 번째 페이지, 페이지 당 보여 줄 데이터는 3건 2. 예제 setFirstResult() : 몇 번 째 부터? setMaxResult() : 몇 개? public List findbyPage(int age, int offset, int limit){ return em.createQuery("select m from Member m where m.age = :age order by m.userName desc") .setParameter("age", age) .setFirstResult(offset) //몇 번째부터? .setMaxResults(limit) // 몇 개? ..
1. 페이징 한계 컬렉션을 페치 조인하면 페이징이 불가능함 컬렉션을 페이 조인하면 일대다 조인이 발생하여 데이트가 예측할 수 없이 증가한다. 일대다에서 "일"을 기준으로 페이징을 하는 것이 목적인데 DATA는 "다"를 기준으로 DB에서 row가 생성된다.. 즉 Order 기준으로 페이징을 하고싶지만.. "다"인 OrderItem을 조인하면 "다"가 기준임.. 이 경우에 페이징을 시도하면 데이터를 싹 메모리에 올려서 페이징을 시도한다. ㅎㅎㅎㅎㅎ심각하다. 2. hibernate.default_batch_fetch_size, @BatchSize 그러면, 페이징 + 컬렉션 엔티티 함께 조회하고 싶으면 어떻게 해야함.. xToOne 관계를 모두 fetch join함. ToOne관계를 row수를 증가시키지 않아 ..
이전에 page에 관련해서 간략히 정리했던 부분이 있다. https://bsh-developer.tistory.com/13 아래처럼 name이 일치하는 entity를 page로 return을 해보자. 참고로 Pageagble은 paging을 요청하는 것을 의미한다. Page findByName(String name, Pageable pageable); Page findByName(String name, Pageable pageable); System.out.println("find by name with paging : " + userRepository.findByName("hyun", PageRequest.of(0,2, Sort.by(Sort.Order.desc("id")))).getContent())..
1. Page Paging : DB에 저장된 entity를 page로 나누는 것. page에 대한 설명은 아래와 같다. slice에 대한 정보와 전체에 대한 정보를 가지고 있다. A page is a sublist of a list of objects. It allows gain information about the position of it in the containing entire list. public interface Page extends Slice Slice : data 묶음의 일부 덩어리. slice에서 제공하는 정보는 현재 slice에 대한 정보만을 준다. slice에서 제공하는 method int getNumber(); List getContent(); int getNumberOfEl..