JPA

[JPA] 1. JPA 소개

inuma 2020. 12. 29. 21:43
  • JPA 도입 배경
    • 기존 SQL 기반의 코드(ex. mybatis)와 같은 경우,
      테이블 수정시 해당하는 테이블과 관련된 모든 쿼리들을 수정해야 함 =>
      비효율적인 생산 코드, 모든 도메인 로직이 쿼리에 집중될 수 밖에 없음
    • 객체와 RDB releation 간의 차이점 존재
      • 상속
      • 연관관계
      • 데이터 타입
      • 데이터 식별 방법
    • 엔티티 신뢰 문제 발생
      • 쿼리를 이용하여 조회한 데이터의 필드가 null이 아닌지는 쿼리를 확인해봐야 함
  • JPA(Java Persistence Api)란?
    • 특징
      • Java 진영의 ORM 기술 표준
      • 같은 트랜잭션에서 조회한 instance의 reference는 동일하다.
        • DB Isoloation level이 Read Commited여도 Application level에서 Repeatable read를 보장
      • 즉시 로딩 지원
        • 데이터를 가져올 때 연관된 데이터를 JOIN 쿼리를 이용하여 함께 조회
      • 지연 로딩
        • 데이터를 가져올 때 연관된 데이터를 함께 조회하는 것이 아닌 연관된 데이터를 실제로 사용할 때 연관된 데이터를 조회
    • 정의
      • Java Application에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
    • 구현체 종류
      • Hibernate
      • EclipseLink
      • DataNucleus
      • etc...
    • 장점
      • SQL 중심의 개발에서 객체 중심의 개발로 변화가 가능
      • 지연 로딩(lazy loading)
        • 실제로 사용하는 시점에 해당하는 연관 데이터 조회
      • 쓰기 지연
        • JDBC Batch SQL 기능으로 한번에 SQL 전송
          • api를 사용하는 시점에서 쿼리를 전송하는 것이 아닌 커밋하는 시점에서 해당 트랜잭션에서 수행된 쿼리 전송

 

'JPA' 카테고리의 다른 글

[JPA] 6. 엔티티 매핑  (0) 2021.01.05
[JPA] 5. 영속성 컨텍스트 - 2  (0) 2020.12.31
[JPA] 4. 영속성 컨텍스트 - 1  (0) 2020.12.31
[JPA] 3. JPA 기본 api 사용  (0) 2020.12.30
[JPA] 2. JPA 설정  (0) 2020.12.30