본문 바로가기

Jpa/series4

[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.
[jpa 3편] OneToOne 정리 목차는 jpa series 목차 에 있습니다. source 는 Github 에 있습니다. [jpa 3편] OneToOne 정리 OneToOne JoinColumn, mappedBy 상세 설명 JoinColumn 은 조인 대상이 되는 정보를 명시하는 annotation 입니다. JoinColumn(name = "외래키 이름", referenceColumn = "조인할 컬럼") referenceColumn 이 설정 되지 않으면 기본 값으로 조인할 테이블의 PK 가 설정 됩니다. 여기서는 Address 테이블의 address_id 로 설정 됩니다. (아래 예시 참조) 여기서 주의할게 JoinColumn(name = "외래키 이름") 은 Foreign Key 의 이름입니다. 실제 조인할 컬럼은 reference.. 2022. 6. 16.
[jpa 1편] jpa 개념 정리 목차는 jpa series 목차 에 있습니다. [Jpa 1편] jpa 개념 정리 Jpa 란? Java Persistence API 약자입니다. 자바 ORM 기술에 대한 API 표준 명세 입니다. ORM 사용을 위한 인터페이스를 모아둔 것 입니다. ORM 이란? Object Releational Mapping 으로서 객체와 관계형 데이터베이스 맵핑을 의미합니다. 패러다임의 불일치 문제 및 SQL 생성을 해주며, Object 와 RDB 를 맵핑해줌으로써 기존의 DB 접근 방식에 대한 개선된 점이 있습니다. Jpa 장점 코드 간결성 및 반복되는 작업 감소 예시는 다음과 같습니다. JDBC 를 이용해서 insert, update 를 한다고 가정합니다. update, insert 를 개발했는데 update, in.. 2022. 6. 16.