JPA 소개


* JPA 사용 전 

- 거듭 반복되는 코드
1. CRUD 기능 구현을 위한 SQL 작성
SELECT id, name FROM Member WHERE id = ?

2. JDBC API를 사용해 SQL 실행
ResultSet rs = stmt.executeQuery(sql);

3. 결과 값을 객체로 매핑
String id = rs.getString("id");
String name = rs.getString("name");
Member member = new Member();
member.setId(id);
member.setNam(name);
: SQL Mapper의 사용으로 JDBC API 코드를 덜어주지만 SQL 작성은 해야 한다.

- DB 스키마 변경에 따른 코드 수정 복잡

- 패러다임 불일치

객체
관계형 데이터베이스
상속
상속
슈퍼타입과 서브타입
연관관계
참조
외래키를 통해 조인
객체 그래프 탐색
참조를 통해 제한없이 탐색
SQL 조인 범위에 따른 탐색 범위 고정
비교
== 주소값 비교 
equals() 객체 내부 값 비교
PK로 각 row 구분
모델링
객체 지향 모델링
데이터 모델링
: 개발자가 객체와 관계형 데이터베이스 사이의 패러다임 불일치 문제를 해결하는 데 많은 시간과 코드 소요


* JPA 소개

- 개발자가 직접 SQL을 작성하지 않고 JPA가 제공하는 API를 사용하면 JPA가 적절한 SQL을 생성해 DB에 전달

- 자바 진영의 ORM 기술 표준 (객체와 관계형 데이터베이스 테이블 사이의 매핑 처리를 하여 각각 객체모델링과 데이터모델링 가능)

- JPA 동작 구조

- JPA 사용 이유
  표준  다른 구현 기술로 변경 용이
  성능  동일 트랜잭션 내 데이터 중복 조회시 한 번만 DB에 전달
  생산성  반복되는 SQL 작성과 JDBC API 사용 대신 처리
  유지보수  엔티티 변경에 대한 수정 코드 작성량 감소
  패러다임 불일치 해결  상속, 연관관계, 객체 그래프 탐색, 비교 문제 해결
  데이터 접근 추상화와 벤더 독립성  특정 DB 기술 종속 X (DB Dialect 설정) 

- 단점 : 학습 곡선 매우 높음 (객체와 관계형 데이터베이스의 상위)


'Development > JPA' 카테고리의 다른 글

엔티티 매핑  (0) 2017.11.12
영속성 관리  (0) 2017.01.21
JPA 시작  (0) 2016.11.20

+ Recent posts