728x90
ORM(Object-relational mapping) 이란
- Object-relational mapping (객체 관계 매핑)
- 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다.
- ORM 프레임워크가 중간에서 매핑해준다.
- 대중적인 언어에는 대부분 ORM 기술이 존재한다.
- ORM은 객체와 RDB 두 기둥 위에 있는 기술 이다.
- 어플리케이션과 데이터베이스를 연결해주는 것이 ORM 이라고 보면 된다.
JPA(Java Persistence API) 란
- EJB
- 과거의 자바 표준 (Entity Bean)
- 과거의 ORM
- 문제?
- 코드가 매우 지저분하다.
- API의 복잡성이 높다. (interface를 많이 구현해야 함)
- 속도가 느리다.
- Hibernate
- ORM 프레임워크, Open Source SW
- ‘Gavin King’ 과 시러스 테크놀로지스 출신 동료들이 EJB2 스타일의 Entity Beans 이용을 대체할 목적으로 개발하였다.
- JPA 를 통해 구현한 구현체를 뜻한다.
- JPA (Java Persistence API)
- 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.
- 즉, 실제로 동작하는 것이 아니다.
- JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate라고 할 수 있다.
- JPA 2.1 표준 명세를 구현한 3가지 구현체: Hibernate, EclipseLink, DataNucleus
- 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.
- Cf) Spring Framework
- Application 프레임워크, Open Source SW
- ‘Rod Johnson’ 이 EJB의 여러 문제를 해결하고, 엔터프라이즈 애플리케이션 개발을 좀 더 쉽게 하기 위한 목적으로 만들었다.
- Spring Data JPA
- 스프링에서 하이버네이트를 간편하게 사용할 수 있도록 추상 객체를 씌운 것이다. 이를 통해, 좀 더 쉽고 객체지향적으로 데이터에 접근할 수 있다.
JPA의 동작 과정
- JPA는 애플리케이션과 JDBC 사이에서 동작한다.
- 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
- 즉, 개발자가 직접 JDBC API를 쓰는 것이 아니다.
저장 과정
- Ex) MemberDAO에서 객체를 저장하고 싶을 때
- 개발자는 JPA에 Member 객체를 넘긴다.
- JPA는
- 1) Member 엔티티를 분석한다.
- 2) INSERT SQL을 생성한다.
- 3) JDBC API를 사용하여 SQL을 DB에 날린다.
조회 과정
- Ex) Member 객체를 조회하고 싶을 때
- 개발자는 member의 pk 값을 JPA에 넘긴다.
- JPA는
- 1) 엔티티의 매핑 정보를 바탕으로 적절한 SELECT SQL을 생성한다.
- 2) JDBC API를 사용하여 SQL을 DB에 날린다.
- 3) DB로부터 결과를 받아온다.
- 4) 결과(ResultSet)를 객체에 모두 매핑한다.
- 쿼리를 JPA가 만들어 주기 때문에 Object와 RDB 간의 패러다임 불일치를 해결할 수 있다.
728x90