본문 바로가기

Jpa38

[Querydsl 5편] querydsl 조회 시 영속성 컨텍스트 이슈, JPA 벌크 연산 이슈 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [Querydsl 5편] querydsl 조회 시 영속성 컨텍스트 이슈, JPA 벌크 연산 이슈 Querydsl 이란? querydsl 이란 JPQL 을 만들어주는 builder 입니다. 최종적으로는 JPQL 로 변환됩니다. 즉, 코드로 JPQL 을 작성할 수 있으며, 코드 작성 단계에서 문법적 에러를 확인할 수 있습니다. JPQL 이란? Java Persistence Query Language 약자입니다. SQL을 추상화한 객체지향쿼리 언어입니다. JPQL은 엔티티 객체를 대상으로 쿼리를 작성합니다. 최종적으로 JPQL 또한 SQL 로 변환이 됩니다. JPQL은 SQL을 추상화하기 때문에 특정 데이터베이스 SQL에 의.. 2022. 10. 5.
[Querydsl 4편] querydsl 동적 쿼리 정리 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [Querydsl 4편] querydsl 동적 쿼리 정리 querydsl 동적 쿼리 예시에 대해서 간단히 정리했습니다. 2022. 8. 10.
[Jpa 4편] n+1 정리 목차는 jpa series 목차 에 있습니다. source 는 Github 에 있습니다. [Jpa 4편] n+1 정리 1. Jpa n+1 문제란? 상위 엔티티에서 하위 엔티티를 조회할 때마다 하위 엔티티 갯수만큼 쿼리가 더 수행되는 현상입니다. 데이터가 많을 때는 하위 엔티티 만큼 쿼리가 발생하게 되니 성능 문제가 발생할 수 있습니다. 내부 동작 n+1 에 관련해서 알아보기 전에 jpa 가 동작하는 방식에 대해서 간략히 정리했습니다. repository 인터페이스에 선언한 메서드를 호출하면 JPA 엔진에서는 메서드명을 분석해서 JPQL을 생성합니다. JPQL은 SQL을 추상화한 쿼리 언어입니다. 특정 SQL에 종속되지 않고, 엔티티 객체와 필드명을 맵핑해서 쿼리를 수행합니다. 예를 들어, findById.. 2022. 7. 7.
[Jpa 2편] OneToMany, ManyToOne 정리 목차는 jpa series 목차 에 있습니다. source 는 Github 에 있습니다. [Jpa 2편] OneToMany, ManyToOne 정리 단방향 OneToMany JoinColumn 없음 아래와 같이 JoinColumn 없이 OneToMany 단방향을 설정하면 team, team_member 테이블 간 mapping 테이블이 생성 됩니다. (team_list 테이블) 테이블이 새로 생성되고 해당 테이블에 insert 쿼리가 발생되기에 비효율적입니다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Team { @Id @Column(name = "team_id") @GeneratedValue(strat.. 2022. 7. 7.