(10) JPA 소개

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
  • 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