JPA
JPA(Java Persistence API)란?
- 자바 진영의 ORM 기술 표준
- JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 된다.
- JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 Mapping 해준다.
- JPA 는 Java Persistence(영속성) API 입니다. 여기서 Persistence란, 사전적 의미로 "영속성"을 의미하며, 데이터가 (없어지지 않고 오랜동안) 지속됨을 의미한다.
Java Persitance API 는 "자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API"
ORM (Object Relational Mapping)
- ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑하여 패러다임 불일치 문제를 개발자 대신 해결해준다.
- ORM 프레임워크를 사용하면 객체를 마치 자바 컬렉션에 저장하듯 저장할 수 있고, 이에 대해 ORM 프레임워크가 적절한 SQL을 생성해서 DB에 객체를 저장해준다.
Hibernate
- 자바 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크이다.
- 하이버네이트 ORM(Hibernate ORM)은, 자바 언어를 위한 객체 관계 매핑 프레임워크로, 객체 지향 도메인 모델을 관계형 데이터베이스로 매핑하기 위한 프레임워크를 제공한다.
Spring Data JPA
사용이유
- 생산성이 증가한다
- DDL문 자동생성, 간단하게 CRUD가 가능 등
- 유지보수
- 필드를 추가하거나 삭제 시 맵핑이나 쿼리수정을 JPA가 대신 처리함으로 수정할 코드가 줄어든다
- 패러다임 불일치 해결
- 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제를 해결해준다.
- 성능
- JPA는 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공한다. JPA는 애플리케이션과 데이터베이스 사이에서 동작한다 이렇게 애플리케이션과 데이터베이스 사이에 계층이 하나 더 있으면 최적화 관점에서 시도해 볼 수 있는 것들이 많다.
- 데이터 접근 추상화와 벤더 독립성
- 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공한다. → 특정 데이터베이스 기술에 종속되지 않는다.
- H2, mySql, oracle 등 관계형 DB이자 표준을 준수한 SQL을 지원한다면, 어떤 데이터베이스든 사용 가능하다.
참조
JPA란?
JPA란 무엇인가?
[Spring] JPA의 이해(JPA, Hibernate)
[JPA] JPA란 무엇인가?