기존 개발방식(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)
'back > JPA' 카테고리의 다른 글
[JPA] equals , hashcode (0) | 2022.11.08 |
---|---|
[JPA] JPQL, QueryDSL (0) | 2020.03.21 |
[JPA] JPA 영속성 컨텍스트 (0) | 2020.03.08 |
[JPA] 연관관계 매핑 : 단방향, 양방향 매핑 (0) | 2020.03.01 |
[JPA] JPA 기초 설정 및 entity 필드 매핑 (0) | 2020.02.27 |