JPA란?
JPA(Java Persistence API)는 자바에서 사용하는 ORM(Object Relational Mapping) 기술 표준이다.
자바 애플리케이션과 관계형 데이터베이스 사이의 데이터 영속성을 관리하기 위한 표준화된 인터페이스를 제공하는 기술이다.
즉, JPA는 인터페이스이지 특정 기능을 제공하는 라이브러리가 아니다.
그러면 JPA를 어떻게 사용해야하는것일까? JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 사용해야한다. 대표적인 JPA 구현체는 Hibernate, OpenJPA, EclipseLink등이 있다.
ORM 이란?
그러면 ORM이란 무엇일까? ORM 은 Object-Relational Mapping 의 약자로, 객체와 관계형 데이터베이스 간의 매핑을 자동화하는 기술이다.
객체지향프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
이때 클래스와 테이블 사이에 모델 불일치가 생기는데 이를 해결해준다.
JPA 동작 과정
JPA는 Java 어플리케이션과 JDBC 사이에서 동작한다. JPA는 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
Hibernate 란?
Hibernate는 JPA의 구현체중 하나이다.
위 그림 나와있듯이 JPA의 EntityManagerFactory, EntityManager, EntityTransaction를 Hibernater가 상속받아 구현하고있다.
즉, JPA는 인터페이스이고 우리는 JPA를 구현한 구현체를 사용해도 되고, 직접 구현을 해도된다. 그중 Hibernate는 오랜기간 사용되며 매우 안정적인 라이브러리이기 때문에 많이 사용된다.
Spring Data JPA 란?
그러면 자주 사용하는 Spring Data JPA는 무엇일까? Spring Data JPA는 Spring에서 제공하는 모듈중 하나이다. JPA를 한단계 더 추상화 시킨 Repository라는 인터페이스를 제공해서 JPA를 간편하게 사용할 수 있도록 도와준다.
즉, Spring Data JPA 는 Hibernate 와 JPA 를 기반으로한 데이터 엑세스 기술을 간편하게 사용할 수 있도록 지원하는 Spring Framework 의 프로젝트 이다.
JPA의 장단점
- 장점
- 생산성: Hibernate는 SQL을 직접 사용하지 않고, 메서드 호출로 쿼리를 수행한다, 즉, SQL 반복 작업을 하지 않으므로 생산성 향상된다.
- 유지보수: 테이블 칼럼 변경 시 이전에는 SQL을 모두 확인 후 수정 필요했지만, JPA는 JPA가 대신 작업을 수행하므로 유지보수 측면에서 장점이 있다
- 단점
- 성능저하 위험: 메서드 호출로 쿼리를 실행하는 건 내부적인 동작이 많다는 뜻이고 이는 직접 SQL을 호출하는 것보다 성능이 낮아질수도있다.
Reference
'Java , Spring > Jpa' 카테고리의 다른 글
[JPA] 상속관계 매핑 (1) | 2023.11.01 |
---|---|
[JPA] 연관관계 (0) | 2023.10.08 |
[JPA] 엔티티 매핑 (0) | 2023.10.06 |
[JPA] 영속성 관리 - 영속성 컨텍스트 (1) | 2023.10.03 |
[JPA] JPA 시작하기 (0) | 2023.10.03 |
댓글