JPA

시바코코개발자·2023년 9월 11일
0
  • JPA (Java Persistence API): 자바 ORM(Object-Relational Mapping) 표준 명세로, 자바 애플리케이션과 관계형 데이터베이스 간의 객체를 관계로 매핑해주는 프레임워크입니다.

  • 엔터티: 데이터베이스의 테이블을 자바 클래스로 표현한 것.

로딩 방식의 종류

  • 바로 로딩 (Eager Loading): 연관된 엔터티를 즉시 로딩합니다. 조회하는 엔터티와 연관된 엔터티를 함께 조회합니다.

  • 지연 로딩 (Lazy Loading): 연관된 엔터티를 실제로 사용할 때 로딩합니다.

지연 로딩의 작동 방식

지연 로딩은 실제로 해당 연관 엔터티를 사용할 때까지 로딩을 연기합니다. 처음 엔터티를 조회할 때는 프록시 객체를 로딩하며, 실제 연관 엔터티의 데이터가 필요한 시점에서 데이터베이스에 쿼리를 보내 해당 데이터를 로드합니다.

지연 로딩의 장점

  • 성능 최적화: 모든 연관된 엔터티를 항상 로딩하는 것은 성능에 부담을 줄 수 있습니다. 지연 로딩을 사용하면 필요한 시점에서만 연관 엔터티를 로딩하기 때문에 초기 성능 부담을 줄일 수 있습니다.
  • 네트워크 트래픽 감소: 불필요한 데이터를 전송하지 않아 트래픽을 절약할 수 있습니다.

지연 로딩의 단점

  • N+1 문제: 연관된 엔터티를 로딩할 때마다 추가적인 쿼리가 실행될 수 있습니다. 이로 인해 예상보다 많은 쿼리가 발생하는 N+1 문제가 발생할 수 있습니다.
  • 초기화 문제: 특정 영속성 컨텍스트 밖에서 지연 로딩된 엔터티에 접근하면 초기화되지 않은 프록시에 접근하게 되어 LazyInitializationException을 발생시킬 수 있습니다.

JPA는 같은 트랜잭션일 때 같은 객체가 조회되는 것을 보장한다.
JPA는 패러다임의 불일치 문제를 해결해주고 정교한 객체 모델링을 유지하게 도와준다.

0개의 댓글