Spring/자바 ORM 표준 JPA프로그래밍

JPA 소개

hyun-1200 2022. 5. 5. 18:13

JAVA : 객체지향 언어

DB: 관계형 DB ( oracle, MySQL, .. ) 

 

-> 객체를 관계형 DB에 관리

-> SQL 중심의 개발 -> 무한 CRUD 반복  

 

패러다임의 불일치 

객체 vs 관계형DB 

 

*객체와 관계형 DB의 차이

1. 상속

2. 연관관계

- 객체는 참조를 사용   ex. Member.getTeam() 

- 테이블은 외래키 사용   ex. JOIN ON member.member_id = team.team_id

3. 데이터 타입

- 객체 모델링은 자바컬렉션에서 관리 가능 

- 객체를 테이블에 맞추어 모델링/ 테이블에 맞추어 객체를 저장해야 한다. 

4. 데이터 식별 방법

 

-> 객체를 자바 컬렉션애 저장하듯이 DB를 저장할 기술이 필요하다. 

JPA ( Java Persistence API)  : 자바 진영의 ORM 기술 표준

ORM (Object - relational mapping ) : 객체 관계 매핑

- 객체는 객체대로 설계

- 관계형DB는 관계형DB대로 설계

- ORM프레임워크가 중간에서 매핑

- 대중적인 언어에는 대부분 ORM이 존재

 

JPA의 저장할때 동작.  

 

 

 

* JPA의 필요성

1. SQL 중심적인 개발에서 객체 중심으로 개발 가능

2. 생산성

- 저장 : jpa.persist(member)

- 조회 : jpa.find(memberId)

- 수정 : member.setName("변경할아이디")

- 삭제 : jpa.remove(member) 

3. 유지보수

- 기존 : 새로운 필드 추가 시, 모든 SQL 수정 필요

- JPA : 필드만 변경하면 됨. SQL은 JPA가 처리.  

4. 패러다임의 불일치 해결

- JPA와 상속

- JPA와 연관관계

- JPA와 객체 그래프 탐색

- JPA와 비교하기 

5. 성능

- 1차 캐시와 동일성(identity) 보장

- 트랜잭션을 지원하는 쓰기 지연  

    insert : 트랜잭션을 커밋할때까지 insert SQL을 모아서 JDBC BATCH SQL 기능으로 한번에 SQL 전송 

   update, delete :  트랜잭션 커밋할때까지 update, delete 실행하고 바로 커밋 

- 지연로딩 

    지연로딩 : 객체가 실제 사용될 때 로딩

    즉시로딩 : JOIN SQL로 한번에 연관된 객체까지 미리 조회

6. 데이터 접근 추상화와 벤더 독립성

7. 표준 

 

-> ORM은 객체와 RDB 두 기둥위에 있는 기술이다. 

 

 

 

(해당 글은 인프런- 자바 ORM 표준 JPA 프로그래밍 수업 및 제공되는 자료를 바탕으로 작성하였습니다. ) 

'Spring > 자바 ORM 표준 JPA프로그래밍' 카테고리의 다른 글

고급매핑 : 상속관계 매핑 /@MappedSuperclass  (0) 2022.05.10
다양한 연관관계 매핑  (0) 2022.05.08
연관관계 매핑 기초  (0) 2022.05.07
엔티티 매핑  (0) 2022.05.06
영속성 컨텍스트  (0) 2022.05.05