목록BE (354)
오봉이와 함께하는 개발 블로그
스프링 데이터 페이징 활용3 - 컨트롤러 개발 실제 컨트롤러 @RestController @RequiredArgsConstructor public class MemberController { private final MemberJpaRepository memberJpaRepository; private MemberRepository memberRepository; @GetMapping("/v1/members") public List searchMemberV1(MemberSearchCondition condition) { return memberJpaRepository.search(condition); } @GetMapping("/v2/members") public Page searchMemberV2(Me..
스프링 데이터 페이징 활용1 - CountQuery 최적화 스프링 데이터 라이브러리가 제공 count 쿼리가 생략 가능한 경우 생략해서 처리 페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때 마지막 페이지 일 때 (offset + 컨텐츠 사이즈를 더해서 전체 사이즈 구함) PageableExecutionUtils.getPage()로 최적화 JPAQuery countQuery = queryFactory .select(member) .from(member) .leftJoin(member.team, team) .where( usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGo..
스프링 데이터 페이징 활용1 - Querydsl 페이징 연동 스프링 데이터의 Page, Pageable을 활용해보자. 전체 카운트를 한번에 조회하는 단순한 방법 데이터 내용과 전체 카운트를 별도로 조회하는 방법 사용자 정의 인터페이스에 페이징 2가지 추가 public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); Page searchPageSimple(MemberSearchCondition condition, Pageable pageable); Page searchPageComplex(MemberSearchCondition condition, Pageable pageable); } 전체 카운트를 한번에 조회..
사용자 정의 리포지토리 사용자 정의 리포지토리 사용법 사용자 정의 인터페이스 작성 사용자 정의 인터페이스 구현 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 사용자 정의 리포지토리 구성 1. 사용자 정의 인터페이스 작성 public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); } 2. 사용자 정의 인터페이스 구현 public class MemberRepositoryImpl implements MemberRepositoryCustom { private final JPAQueryFactory queryFactory; public MemberRepositoryImpl(EntityManager em) {..
스프링 데이터 JPA 리포지토리로 변경 스프링 데이터 JPA - MemberRepository 생성 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 스프링 데이터 JPA 테스트 @SpringBootTest @Transactional class MemberRepositoryTest { @Autowired EntityManager em; @Autowired MemberRepository memberRepository; @Test void basicTest() { Member member = new Member("member1", 10); memberRepository.save(mem..