본문 바로가기
카테고리 없음

ORM

by BottleCoffin 2022. 9. 6.

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

- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계
- ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재

 

 

JPA는 애플리케이션과JDBC 사이에서 동작

 

 

 

JPA 동작 과정

 

저장

 

JPA에게 객체를 넘기면 JPA가 Entity를 분석해서 적절한 SQL을 생성하고 JDBC API를 사용해서 쿼리를 DB에 보낸다.

 

 

 

조회

 

 

PK값만 넘기면 JPA가 객체를 보고 적절한 쿼리를 만들어낸다.

 

-> 패러다임 불일치 해결

 

 

 

JPA

 

EJB -> 하이버네이트(오픈 소스) -> JPA(자바 표준)

 

JPA는 표준 명세(인터페이스의 모음)

대표적인 JPA의 구현체 = 하이버네이트, EclipseLink, DataNucleus

 

 

JPA를 왜 사용해야 하는가

- SQL 중심적인 개발에서 객체 중심으로 개발
- 생산성
- 유지보수
- 패러다임의 불일치 해결
- 성능
- 데이터 접근 추상화와 벤더 독립성
- 표준

 

생산성

• 저장: jpa.persist(member)
• 조회: Member member = jpa.find(memberId)
• 수정: member.setName(“변경할 이름”)
• 삭제: jpa.remove(member)

 

유지보수

기존 = 필드 변경, 추가시 모든 SQL 수정

JPA에서 자동으로 수정

 

패러다임의 불일치 해결

1.JPA와 상속
2.JPA와 연관관계
3.JPA와 객체 그래프 탐색
4.JPA와 비교하기

 

성능 최적화 기능

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

• 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상

2. 트랜잭션을 지원하는 쓰기 지연(transactional write-behind) (버퍼링)

• 트랜잭션을 커밋할 때까지 INSERT SQL을 모음
• JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송


3. 지연 로딩(Lazy Loading)

• 지연 로딩: 객체가 실제 사용될 때 로딩
• 즉시 로딩: JOIN SQL로 한번에 연관된 객체까지 미리 조회

 

 

ORM은 객체와 RDB 두 기둥위에 있는 기술

JPA와 RDB 둘 다 잘 알아야 한다.

 

 

 

 

출처 : 
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

댓글