July
18th,
2021
ORM(Object-relational Mapping)
- Object-relational mapping
- 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다.
- ORM 프레임워크가 중가에서 매핑해준다.
- 대중적인 언어에는 대부분 ORM 기술이 존재한다.
- ORM은 객체와 RDB 두 기둥 위에 있는 기술이다.
JPA(Java Persistence API)란
- EJB
- 과거의 자바 표준
- 과거의 ORM
- 문제점
- 코드가 매우 지저분함
- API 복잡성이 높다
- 속도가 느리다
- Hibernate
- ORM 프레임워크
- EJB2 스타일의 Entity Beans 이용을 대체할 목적으로 개발
- JPA (Java Persistence API)
- 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.
- JPA 인터페이스를 구현한 대표적 오픈소스가 Hibernate이다.
- JPA 2.1 표준 명세를 구현한 3가지 구현체: Hibernate, EclipseLink, DataNucleus
JPA 동작 과정
- JPA는 애플리케이션과 JDBC 사이에서 동작한다.
- 개발자가 JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
- 개발자가 직접 JDBC API를 쓰는 것이 아니다.
저장 과정
- JPA에 Member 객체를 넘긴다
- JPA는 Member 엔티티를 분석한다
- INSERT SQL을 생성한다.
- JDBC API를 사용하여 SQL을 DB에 날린다.
조회 과정
- Member의 PK를 JPA에 넘긴다
- 엔티티 매핑 정보를 바탕으로 적절한 SELECT를 생성한다.
- JDBC API를 사용하여 SQL을 DB에 날린다
- DB로부터 결과를 받는다
- 결과를 객체에 매핑한다.
JPA 사용 이유
-
SQL 중심 개발에서 객체 중심으로 개발
-
생산성
- JPA를 사용하는 것은 Java Collection에 데이터를 넣었다 빼는 것처럼 사용할 수 있게 만든 것이다.
- 간단한 CRUD 사용
- 수정이 굉장히 간단하다
- 객체를 변경하면 알아서 DB에 UPDATE Query가 나간다.
-
유지보수
- 기존: 필드 변경 시 모든 SQL을 수정해야한다.
- JPA: 필드만 추가하면 된다.
-
Object와 RDB 간의 패러다임 불일치 해결
JPA의 성능 최적화 기능
- 중간 계층이 있는 경우 아래 방법으로 성능 개선이 가능하다
- 모아서 쓰는 버퍼링 기능
- 읽을 때 쓰는 캐싱 기능
- JPA도 JDBC API와 DB 사이에 존재하기 때문에 위의 두 기능이 모두 존재한다.