- JPA 도입 배경
- 기존 SQL 기반의 코드(ex. mybatis)와 같은 경우,
테이블 수정시 해당하는 테이블과 관련된 모든 쿼리들을 수정해야 함 =>
비효율적인 생산 코드, 모든 도메인 로직이 쿼리에 집중될 수 밖에 없음 - 객체와 RDB releation 간의 차이점 존재
- 상속
- 연관관계
- 데이터 타입
- 데이터 식별 방법
- 엔티티 신뢰 문제 발생
- 쿼리를 이용하여 조회한 데이터의 필드가 null이 아닌지는 쿼리를 확인해봐야 함
- 기존 SQL 기반의 코드(ex. mybatis)와 같은 경우,
- 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를 사용하는 시점에서 쿼리를 전송하는 것이 아닌 커밋하는 시점에서 해당 트랜잭션에서 수행된 쿼리 전송
- JDBC Batch SQL 기능으로 한번에 SQL 전송
- 특징
'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 |