2025/03/27 3

[JPA] JPA의 N + 1 문제 정리

N + 1 문제연관 관계에서 발생하는 이슈연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n)만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 현상.현상 재현FetchType 정리예시로, 선생님과 학생의 관계를 표현해보려한다.하나의 선생님은 여러 명의 학생을 담당한다.한 명의 학생은 한 명의 선생님에게 소속된다.@Entity@Data@NoArgsConstructorpublic class Teacher { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String name; @OneToMany(mappedBy = "teac..

공부 2025.03.27

[JPA] FetchType 정리

FetchTypeJPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는 전략’A와 B라는 엔티티가 존재한다고 했을때, 테이블 간의 관계에서 A엔티티를 조회하였을 경우 B엔티티를 함께 조회할 것인지 아니면 필요에 따라 조회할 것인지 결정하는 데 사용됨.지연 로딩의 관계에서는 A엔티티를 조회할 때 B엔티티는 조회하지 않고 B엔티티 데이터가 실제로 사용될 때 해당 데이터를 조회함.FetchType.EAGER (즉시로딩)엔티티를 조회하는 방법을 정의하는 전략 중 하나.테이블 간의 관계에서 A라는 엔티티를 조회할 때 연관된 B라는 엔티티도 함께 조회하는 방식한번의 쿼리로 필요한 모든 데이터를 가져올 수 있으나 필요하지 않은 데이터까지 조회되어 성능 이슈 발생 가능.연관된 엔티티를 실제로 사용할 때 조..

공부 2025.03.27

JDBC, JPQL, QueryDSL etc

JDBCJava Database Connectivity데이터베이스와의 연결과 쿼리 수행을 제공하는 Java의 API대표기능 3가지db와 같은 데이터 소스와 연결db에 쿼리 전송요청에 따른 db쿼리 결과 처리주로 쓰이는 JDBC API 클래스와 인터페이스java.sql.ConnectionConnection객체: Java 프로그램이 외부 데이터베이스 시스템과 연결될 때 사용됨.db와의 연결을 설정하고 유지하며, SQL 쿼리를 실행하거나 트랜잭션을 관리db연결 생성 및 종료, 커밋/롤백 등 트랜잭션 관리, Statement/PreparedStatement 등 객체 생성 기능 제공setAutoCommit(true) → default롤백처리가 필요하다면 false로 설정하고, 명시적으로 rollback() 또는 ..

공부 2025.03.27