[JPA] JPA란? : 등장배경, ORM, 하이버네이트
기존 개발방식(mybatis)의 문제
- 물리적으로 코드가 분리되어있지만 논리적인 분리는 이루어 지지 않음
- sql 에 의존적인 개발
- 유지보수의 문제(칼럼 추가 수정 삭제시 sql, 코드 수정 양이 큼)
- 패러다임 불일치 문제
: a 테이블을 참조하고 있는 b 테이블,
b 테이블에 데이터를 넣을 때 a 테이블에도 데이터를 넣어줘야 참조관계가 깨지지 않음
JPA
: Java Persistence API
- 자바 진영의 ORM 기술 표준
ORM
: Object-relational mapping(객체 관계 매핑)
- 객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계
- ORM 프레임워크가 이 둘을 중간에서 매핑
JPA는 애플리케이션과 DB 사이에 있다
JAVA APP <> JPA <> JDBC API <> DB
JPA는 인터페이스, 하이버네이트는 JPA의 구현체
동작순서(저장)
1. MemberDAO
2. PERSIST(entity)
3. JPA : Entity 분석, Insert ql 생성, JDBC API 사용, 패러다임 불일치 문제 해결
4. DB insert
* 패러다임 불일치 문제 : a 테이블을 참조하고 있는 b 테이블, b 테이블에 데이터 넣을 때 a 테이블에도 데이터를 넣어줘야 참조관계가 깨지지 않음
동작순서(조회)
MemberDAO
find(id)
JPA : SELECT SQL 생성, JDBC API 사용, ResultSet매핑, 패러다임 불일치 문제 해결
4. DB select
5. Entity Object 반환
JPA의 CRUD
저장 : jpa.persist(member)
조회 : Member member = jpa.find(memberId)
수정: member.setName("~")
삭제: jpa.remove(member)