Miracle Morning, LHWN

11. JPA (Java Persistence API) 본문

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 의 흐름

https://fastcampus.co.kr/courses/204729/clips/

화면을 통해 들어온 요청은 Controller - Service 를 통해 어떤 처리를 할지 결정한다. 기존 ORM, Mybatis 의 경우에는 Mapper 를 통해서 테이블에 연동이  된다. VO 혹은 DTO 는 테이블 형태로 정의되어 실제 데이터베이스와 연결되어 있다.

이 테이블에 데이터가 바인딩 되고, 바인딩된 테이블은 JPA Repository (엔티티 매니저)를 통해 Service-Controller 로 화면에 출력된다.

 

JpaRepository 계층 구조

https://fastcampus.co.kr/courses/204729/clips/

JpaRepository 는 PagingAndSortingRepository 를 상속 받고 있고, PagingAndSortingRepository 는 CrudRepository 를 상속 받고 있는 구조이다.

 

 

출처 : https://fastcampus.co.kr/courses/204729/clips/

Comments