JPA N+1 문제(EntityGraph, Fetch join)
·
JPA
JPA에 연관관계를 구현하다보면 JPA의 고질적인 문제인 N+1 현상을 경험하게 될 것이다. 🎈 N+1 문제란?한 번의 쿼리에서 관련 데이터를 추가로 조회하기 위해 쿼리를 N번 더 조회하는 현상예시로 user 10명 조회 -> user 마다 post를 조회 (10번 추가 조회)해당 현상은 큰 성능 저하를 일으킴Entity - BasicUser @Entity@Table(name ="BASIC_USERS")@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class BasicUsers implements Serializable { @Id @Column(name = "USER_EMAIL", nullable = false) private St..
[JPA] 영속성 컨텍스트(Persistence Context) & Entity Manager를 파헤쳐보자
·
JPA
🎈 JPA 영속성 컨텍스트란(Persistence Context)?JPA의 영속성 컨텍스트(Persistence Context)는 엔티티(Entity) 객체를 관리하는 논리적 공간으로, JPA에서 매우 중요한 개념이다. 영속성 컨텍스트는 데이터베이스와 관련된 엔티티 객체를 캐싱하고, 이를 통해 엔티티를 효과적으로 관리하며 애플리케이션의 성능과 데이터 일관성을 유지하는 메모리상의 중간 저장소라고 생각할 수 있다. 영속성 컨텍스트는 논리적인 개념일 뿐이다. EntityManager를 통해 영속성 컨텍스트에 접근할 수 있다.서론으로는 이해하기 어려울 것이다. 본론으로 들어가기 앞서 EntityManager를 알고 있어야한다.🎈 JPA Entity Manager란?Entity Manager는 엔티티와 관련된..
[JPA] JPA란 무엇인가?(정의, 주요 특징, 장단점)
·
JPA
JPA(Java Persistence API)는 Java 표준 ORM(Object-Relational Mapping)기술로 Java 애플리케이션에서 객체와 관계형 데이터베이스 간의 매핑을 관리하고 데이터 접근을 처리하는 표준 인터페이스이다. 🎈 JPA의 주요 특징1. 객체-관계 매핑(ORM, Object-Relational Mapping)JPA는 객체와 데이터베이스 테이블을 매핑하여, SQL을 직접 작성하지 않아도 객체의 메서드를 호출함으로써 데이터를 다룰 수 있다.클래스 → 데이터베이스 테이블클래스의 필드 → 테이블의 컬럼객체 → 데이터베이스의 레코드 2. 표준 인터페이스JPA는 표준 스펙이기 때문에, Hibernate, EclipseLink, OpenJPA 등 다양한 구현체를 선택하여 사용할 수 있..