back/JPA

[JPA] JPA란? : 등장배경, ORM, 하이버네이트

펭귄대장 2020. 2. 23. 14:30

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

 

 

반응형