
해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 중급 문법 이전 [Querydsl] 02. 기본 문법 에 이어 Querydsl에서 프로젝션, 동적 쿼리, 수정 삭제 벌크 연산 등에 대해 알아보도록 하자. 프로젝션과 결과 반환 프로젝션이란? select 대상을 원하는 값으로 지정하는 것. 프로젝션 대상을 여러가지 경우로해서 코드와 함께 보자. - 기본 : 프로젝션 대상이 엔티티인 경우 [프로젝션 대상이 하나일 때] @Test public void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String ..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 기본 문법 검색 조건 쿼리 @Test public void search() { Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.eq(10))) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 검색 조건은 .and(), .or()를 메서드 체인으로 연결할 수 있다. 또한 위에서 and 조건은 파라미터로 처리할 수 있다. 예) where(member.username.eq(“..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 기본 지식 JPQL과 Querydsl의 차이 시작전 JPQL과 Querydsl의 차이점이 뭔지 예제로 알아보자.(시작전 세팅은 제외) [JPQL로 작성한 “member1”을 찾는 예제] @Test public void startJPQL() { // member1 find. String qlString = "select m from Member m " + // 만약 여기서 m옆에 공백이 빠진다면..? "where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("us..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 - OSIV와 성능 최적화 Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true 기본값 최신 Spring boot 부터 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 그래서 지금까지 View Template이나 ..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 - 컬랙션 조회 최적화 : 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계 (OneToMany)를 조회하고, 최적화하는 방법을 알아보자. 주문 조회 - 엔티티 조회 V1 - 엔티티 직접 노출 @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/orders") public List orderV1..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 - 지연 로딩과 조회 성능 최적화 : 이전에 만들었던 회원에 사용되는 API에서 나아가서 “주문 + 배송정보 + 회원”을 조회하는 API를 만드는게 목표. 또한 이에 따라 발생하는 지연로딩의 성능 문제를 단계적으로 해결해 보는 것이 목표. 간단한 주문 조회 V1 - 엔티티를 직접 노출 @RestController @RequiredArgsConstructor public class OrderSimpleApiController { private final OrderRepository orderRepository; /**  * V1. 엔티티 직접 노출 * -..

들어가기전 on 절 where절 처럼 Join의 조건을 걸어주는 역할 참고: jpa에서 사용하는 문법과의 차이 left outer join은 left join과 같고 inner join은 join과 같다. (그냥 줄여서 쓰는 거임) 예시 테이블) 아래의 테이블은 "MEMBER"테이블 ID NAME AGE 1 member1 10 2 member2 20 3 member3 30 4 member4 40 아래의 테이블은 "TEAM"테이블 ID NAME 1 teamA 2 teamB 5 teamC 위 두 테이블을 가지고 그림과 코드를 가지고 Join을 정리해보자. LEFT (OUTER) JOIN 위의 그림을 바탕으로 예시 테이블에 적용해보면. select * from member m left join team t o..
출처 : SQL having 과 where 차이 사용방법 1. having절 [예시] select * from 테이블명 group by 필드명 having 조건절 항상 group by 뒤에 위치하고 where 조건절과 마찬가지로 다양한 비교연산자들이 사용되어 구체적인 조건을 줄 수 있다. 2. where절 [예시] select * from 테이블명 where 조건절 항상 from 뒤에 위치하고 조건에는 다양한 비교 연산자들이 사용되어 구체적인 조건을 줄 수 있다. having절과 where절의 유사점 둘 다 데이터 세트검색을 필터링할때 사용할 수 있다는 점 having 절과 where절의 차이 having은 group by가 된 후 특정 필드로 그룹화 된 새로운 테이블에 조건을 준다. where는 모든 ..