기존 개발방식(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

+ Recent posts