1.1. Java Persistence API소개
1.1. ORM/JPA/Hibernate의 개념정리
- ORM(ObjectRelationMapping)이란 OOP의 Object와 RDBMS의 Entity를 매핑(연결)(영속성을 유지하기 위함)하려는 개념이다.
- JPA는 Java언어로 지원하는 ORM 기술에 대한 추상화된 표준 명세입니다. JPA의 시초는 EJB의 EntityBean이다..
Hibernate는 JPA를 기반으로 구현한 제품입니다. Hiberbate외에도 DataNucleus, EclipseLink등 여러제품이 존재한다..
1.2. JPA의장점
- DB설계와 JAVA설계를 한번에 처리할 수 있다
테이블이 변경되면 SQL변경되고, DAO나 서비스, 화면까지 변경해야합니다.
반면 jpa를 이용하면 테이블 생성등과 같은 작업부터 변경되는 DB설계와 JAVA설계를 한번에 처리할 수 있어서 익숙해진다면 빠른 생산성을 얻을 수 있다.
1.3. JPA의단점
- 객체지향 설계원칙(SOLID)가 반영되어야 한다
- 기존의 SQL재사용 불가 및 SQL튜닝 등의 작업에 제약이 생길 수 있다
2. 엔티티와 엔티티메니저
2.1. 엔티티
DB의 엔티티란 업무와 관련된 데이터로서 DB에서 관리되는 대상을 말합니다. '인스턴스'또는 '레코드'라는 용어로도 부른다.
엔터티와 영속성을 유지하는 객체를 엔터티객체(테이블의 한 행)라 한다
2.2. 엔티티객체 매니저 (EntityManager)
엔티티객체들의
LifeCycle
을 관리하는 역할을 합니다. 엔티티들을persistence context
라는 곳에 넣어두고 관리한다.
- EntityManager는 Entity Manager Factory로부터 생성된다.
2.3. 기존의 JPA과 Spring DataJPA
- JPA에서는
EntityManager
라는 존재를 이용해서 영속성(Persistance)를 관리하게 된다.
이때 객체를 보관하려면persist()
, 트랙잭션용commit()
,rollback()
, 자원들을 정리하려면close()
등 복잡한 관리코드가 필요하다.
🌸 Spring Data JPA
- Spring Data JPA는 JPA를 쓰기 편하게 만들어놓은 모듈이다.
Spring Data JPA의 경우에는 단순히 인터페이스 설계만 하면, Spring JPA가 인터페이스를 구현한 DynamicProxy클래스를 자동으로 만들어 주기 때문에 별도의 코드없이 JPA를 활용할 수 있다.(Proxy개념의 이해)
2.4. Spring Data JPA와 Mybatis차이점