일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 컨테이너
- 서브쿼리
- 값 타입
- 페치조인
- 스프링 데이터 JPA
- JPQL
- index
- 오라클
- 스프링
- 데이터베이스
- SQL 튜닝
- TCP/IP
- Spring data JPA
- 컬렉션 조회 최적화
- Spring
- 페이징
- querydsl
- @MappedSuperclass
- SQL
- INDEX SCAN
- 친절한 SQL 튜닝
- 자바의 정석
- 데이터모델링
- 엔티티
- fetch join
- 성능최적화
- DTO
- 정렬
- JPA
- 그룹함수
- Today
- Total
목록분류 전체보기 (123)
nu_s
소속학과 : 방송통신대학교 컴퓨터공학과이름 : 김현우(가)에서 선택한 센서의 명칭- 가속도계 센서- 근접 센서- 지문 센서
스프링 데이터 JPA가 제공하는 Querydsl 기능 여기서 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족하다. 스프링 데이터에서 제공하는 기능이지만 왜 부족한지 알아보자. 1. 인터페이스 지원 - QuerydslPredicateExecutor QuerydslPredicateExecutor 인터페이스 public interface QuerydslPredicateExecutor { Optional findById(Predicate predicate); Iterable findAll(Predicate predicate); long count(Predicate predicate); boolean exists(Predicate predicate); // _more functionali..

1. 사용자 정의 리포지토리 사용자 정의 리포지토리 사용법 사용자 정의 인터페이스 작성 사용자 정의 인터페이스 구현 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 사용자 정의 리포지토리 구성 스프링 데이터 JPA - MemberRepository 생성 public interface MemberRepository extends JpaRepository { List findByUsername(String username); } 1. 사용자 정의 인터페이스 작성 public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); } 2. 사용자 정의 인터페이스 구현 public class MemberReposit..

1. 순수 JPA 리포지토리와 Querydsl 순수 JPA 리포지토리 @Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public MemberJpaRepository(EntityManager em) { this.em = em; this.queryFactory = new JPAQueryFactory(em); } public List findAll_Querydsl() { return queryFactory .selectFrom(member) .fetch(); } public List findByUsername_Querydsl(String ..
1. 벌크 연산 쿼리 한 번으로 대량 데이터 수정 @Test public void bulkUpdate() { long count = queryFactory .update(member) .set(member.username, "비회원") .where(member.age.lt(28)) .execute(); em.flush(); em.clear(); List result = queryFactory .selectFrom(member) .fetch(); for (Member member1 : result) { System.out.println("member1 = " + member1); } } 기존 숫자에 1 더하기 @Test public void bulkAdd() { long count = queryFactor..
동적 쿼리 동적 쿼리를 해결하는 두가지 방법이 있다. BooleanBuilder Where 다중 파라미터 1. BooleanBuilder @Test public void dynamicQuery_BooleanBuilder() { String usernameParam = "member1"; Integer ageParam = 10; List result = searchMember1(usernameParam, ageParam); assertThat(result.size()).isEqualTo(1); } private List searchMember1(String usernameCond, Integer ageCond) { BooleanBuilder builder = new BooleanBuilder(); if (..

1. 기본 조회 1-1 프로젝션 대상이 하나일 경우 List result = queryFactory .select(member.username) .from(member) .fetch(); 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다. 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회한다. 1-2 튜플 조회 List result = queryFactory .select(member.username, member.age) .from(member) .fetch(); for (Tuple tuple : result) { String username = tuple.get(member.username); Integer age = tuple.get(member.age); } 프로젝션 대상이 둘 이상일 때 ..
1. 검색 조건 쿼리 @Test public void search() { Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1") .and(member.age.eq(10))) .fecthOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 검색 조건은 .and() , .or()를 메서드 체인으로 연결할 수 있다. JPQL이 제공하는 모든 검색 조건 검색 조건 뜻 .eq() = .ne() != .eq().not() != .isNotNull() is not null .in() in .notIn() not in .between() betwe..