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..
디자인 패턴(생성 패턴)
·
CS(Computer science)
디자인 패턴이란?소프트웨어 개발 과정에서 자주 등장하는 문제들을 효과적으로 해결하기 위해 정형화된 설계 방식재사용성 향상 / 유지보수 용이 / 협업에 유리 / 유연한 설계등의 장점이 있다.GoF의 디자인 패턴에 등장하는 "생성", "구조", "행위" 패턴이 대표적이다. 생성패턴 : 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴1. Singleton(싱글톤 패턴)클래스의 인스턴스를 오직 하나만 생성해서 전역에서 공유하도록 보장하는 생성 패턴스프링에서는 기본적으로 Bean이 싱글턴 스코프최초 한번 new 연산자를 통해 고정된 메모리 영역을 사용하기에 해당 객체 접근 시 메모리 낭비를 방지다른 객체와 강하게 결합될 수 있다는 단점, 테스트가 어려운 단점이 존재public class Singleton {..
[JPA] 영속성 컨텍스트(Persistence Context) & Entity Manager를 파헤쳐보자
·
JPA
🎈 JPA 영속성 컨텍스트란(Persistence Context)?JPA의 영속성 컨텍스트(Persistence Context)는 엔티티(Entity) 객체를 관리하는 논리적 공간으로, JPA에서 매우 중요한 개념이다. 영속성 컨텍스트는 데이터베이스와 관련된 엔티티 객체를 캐싱하고, 이를 통해 엔티티를 효과적으로 관리하며 애플리케이션의 성능과 데이터 일관성을 유지하는 메모리상의 중간 저장소라고 생각할 수 있다. 영속성 컨텍스트는 논리적인 개념일 뿐이다. EntityManager를 통해 영속성 컨텍스트에 접근할 수 있다.서론으로는 이해하기 어려울 것이다. 본론으로 들어가기 앞서 EntityManager를 알고 있어야한다.🎈 JPA Entity Manager란?Entity Manager는 엔티티와 관련된..