IT 기술/[JAVA] Spring Boot
11. JPA (Java Persistence API)
Lee Hye Won
2021. 5. 17. 06:19
JPA (Java Persistence API)
Java 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스로,
"프레임워크를 통해 데이터베이스에 쉽게 접근할 수 있는 통로"이다.
인터페이스이기 때문에 구현체로 JPA 를 구현하기 위한 라이브러리가 있다.
- Hibernate ✅
- Eclipse Link ✅
- Data Nucleus
- OpenJPA ✅
- TopLink Essentials
Hibernate
- JPA 의 구현체이다.
- HQL 이라는 강력한 쿼리 언어를 포함한다.
- 객체 지향적이며, 객체를 통한 데이터 바인딩으로 쉽게 데이터를 다룬다.
# 장점
- 객체 지향적이라 객체에 집중하여 개발이 가능하다.
- 유지보수 및 생산성이 좋다.
- 데이터베이스 교체에 용이하다.
# 단점
- 초기에 진입 장벽이 존재한다.
OpenJPA
- Apache 에서 만든 도구이다. (http://openjpa.apache.org)
- JAVA EE 5 사양에서 가능한 100% 오픈 소스 구현
- BEA 시스템이 솔라 메트릭을 인수한 결과로 아파치에 기부한 결과이다.
# 장점
- 좋은 문서 풀을 제공한다.
- 사용하기 용이하다.
# 단점
- 약간의 버그가 존재한다.
JPA 의 흐름
화면을 통해 들어온 요청은 Controller - Service 를 통해 어떤 처리를 할지 결정한다. 기존 ORM, Mybatis 의 경우에는 Mapper 를 통해서 테이블에 연동이 된다. VO 혹은 DTO 는 테이블 형태로 정의되어 실제 데이터베이스와 연결되어 있다.
이 테이블에 데이터가 바인딩 되고, 바인딩된 테이블은 JPA Repository (엔티티 매니저)를 통해 Service-Controller 로 화면에 출력된다.
JpaRepository 계층 구조
JpaRepository 는 PagingAndSortingRepository 를 상속 받고 있고, PagingAndSortingRepository 는 CrudRepository 를 상속 받고 있는 구조이다.