delpho

JPA에 대하여 - 1 본문

CS

JPA에 대하여 - 1

delpho 2022. 8. 31. 17:57

_1. JPA 영속성 컨텍스트의 이점(5가지)을 설명해주세요.

 

[ 영속성 컨텍스트의 이점 ]

 

  • 1차 캐시: 조회가 가능하며 1차 캐시에 없으면 DB에서 조회하여 1차 캐시에 올려 놓습니다.
    • 영속성 컨텍스트는 내부에 Map 형태로 된 1차 캐시를 가지고 있습니다.
    • key: @Id로 선언한 필드, 데이터베이스의 기본키와 매핑
    • value: 엔티티 인스턴스
  • 동일성 보장: 동일성 비교가 가능합니다. (==)

  • 쓰기 지연(Transaction write-behind) : 트랜잭션을 지원하는 쓰기 지연이 가능하며 트탠잭션 커밋하기 전까지 SQL을 바로 보내지 않고 모아서 보낼 수 있습니다.

  • 변경 감지(Dirty Checking) : 스냅샷을 1차 캐시에 들어온 데이터를 찍습니다. commit 되는 시점에 Entity와 스냅샷을 비교하여 update SQL을 생성합니다.

  • 지연 로딩 : 엔티티에서 해당 엔티티를 불러올 때 그 때 SQL을 날려 해당 데이터를 가져옵니다.

 


_2. JPA를 쓴다면 그 이유에 대해서 설명해주세요.

 

  • SQL 중심적인 개발에서 객체 중심으로 개발 : 상속 / 단방향,양방향
  • 성능 최적화 (1차 캐싱, SQL 배치 요청, 지연 로딩)

 

 


_3. N + 1 문제가 발생하는 이유와 이를 해결하는 방법을 설명해주세요.

 

 

[ N+1 문제란 ]

  • N+1 쿼리는 JPA의 프록시로 인한 지연 로딩 때문에 발생합니다.
  • 정확한 의미는 1개의 쿼리를 실행했을 때, 내부에 존재하는 컬렉션들을 조회해오면서 생기는 문제입니다.

 

[ N + 1 문제 발생하는 경우 ]

  1. 즉시 로딩으로 데이터를 가져오는 경우
  2. 지연 로딩으로 데이터를 가져온 이후에 가져온 데이터에서 하위 엔티티를 다시 조회하는 경우

 

[ 해결 방법 ]

  1. Fetch Join
    JPQL의 join Fetch를 사용합니다. (inner join)
    쿼리 한 번으로 해결할 수 있습니다.

  2. @EntityGraph
    @EntityGraph의 attributePaths에 쿼리 수행 시 바로 가져올 필드명을 지정하면 한 쿼리에 대해서만
    Lazy가 아닌 Eager 조회로 가져오게 됩니다. (Outer join)

 

 

출처

https://hoho-hobi.tistory.com/235?category=892009 

 

[JPA] JPA 영속성 컨텍스트의 이점 5가지

영속성 컨텍스트(Persistence Context) Entity를 영구적으로 저장하는 환경을 의미합니다. JPA에서 가장 중요한 용어이고 논리적인 개념입니다. 영속성 컨텍스트는 EntityManager를 생성할 때 함께 만들어지

hoho-hobi.tistory.com

https://velog.io/@j_user0719/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84-BE

 

기술 면접 준비 : BE

JAVA JVM의 구조와 Java의 실행방식을 설명해주세요. 1) JVM의 구조 Class Loarder: 클래스를 JVM 메모리에 로드한다. Execution Engine: 인터프리터,JIT compiler를 이용해 데이터 영역에 배치된 바이트 코드를 실

velog.io

https://hoho-hobi.tistory.com/237

 

[JPA] N+1 문제가 발생하는 이유와 해결 방법

N+1 쿼리는 JPA의 프록시로 인한 지연 로딩 때문에 발생합니다. 정확한 의미는 1개의 쿼리를 실행했을 때, 내부에 존재하는 컬렉션들을 조회해오면서 생기는 문제입니다. 즉시 로딩으로 데이터를

hoho-hobi.tistory.com

https://dev-coco.tistory.com/165

 

[JPA] N+1 문제 원인 및 해결방법 알아보기

JPA를 사용하면 자주 만나게 되는 것이 N + 1 문제이다. N + 1 문제는 성능에 큰 영향을 줄 수 있기 때문에 N + 1 문제가 무엇이고 어떤 상황에 발생되는지, 어떻게 해결하면 되는지에 대해 알아보고

dev-coco.tistory.com

 

'CS' 카테고리의 다른 글

DB에 대하여 -  (0) 2022.08.31
보안에 대하여 - 2  (0) 2022.08.07
보안에 대하여 - 1  (0) 2022.08.07
운영체제에 대하여 - 6  (0) 2022.08.07
운영체제에 대하여 - 5  (0) 2022.07.30