본문 바로가기
JPA

(JPA) JPA란? JPA는 어떻게 구현되어있을까?

by Developer RyanKim 2019. 4. 15.

 JPA 란?
(Java Persistence API)

자바 어플리케이션에서 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.

기본적인 CRUD 기능들이 정의되어있다.


EntityManager라는 인터페이스에 메소드를 정의해놓았다.

 

그렇다면 구현체는?

 

JPA의 구현체는 Hibernate이다.

그말은 JPA를 사용하기위해 반드시 Hibernate를 구현체로 사용할 필요는 없다는 뜻.
하지만 Hibernate가 신뢰할 수 있는 검증된 라이브러리이기 때문에 사용.


2. Hibernate

EntityManager와 관련된 클래스를 구현해놓았다. 실제 데이터베이스와 통신하는 코드는 이 코드라는 뜻!


3. Spring Data JPA

Repository라는 인터페이스를 제공한다. JPA를 한단계 추상화 시킨것.

JPA를 사용해서 개발을 한다면 거의 이 인터페이스를 사용한 경험이 있을 것이다.
사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면
Spring이 자동으로 해당 메소드이름과 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록한다.

Spring Data JPA가 JPA를 추상화했다는 말은 구현에 JPA를 사용하고있다는 것이다.
예를들어 Repository의 기본구현체인 SimpleJpaRepository의 코드는 내부적으로 EntityManager를 사용하고 있다.

 

 

참고 : https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/

 

관련글: https://lion-king.tistory.com/30?category=865302

 

(JPA) JPA 영속성이란? 간단 요약 정리! (영속성 상태 / 기능)

JPA 영속성 1. 영속성 컨텍스트 : Entity가 영구적으로 저장되는 환경 (논리적인 개념) 2. Entity Manager : Entity를 영속성 컨텍스트에 등록하거나 삭제 등의 기능을 담당 3. Entity의 상태 - 1. 비영속 : Entit..

lion-king.tistory.com

 

댓글