delpho
JPA에 대하여 - 1 본문
_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 문제 발생하는 경우 ]
- 즉시 로딩으로 데이터를 가져오는 경우
- 지연 로딩으로 데이터를 가져온 이후에 가져온 데이터에서 하위 엔티티를 다시 조회하는 경우
[ 해결 방법 ]
- Fetch Join
JPQL의 join Fetch를 사용합니다. (inner join)
쿼리 한 번으로 해결할 수 있습니다. - @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 |