JPA(Java Persistence API)란?
자바 진영의 ORM 기술에 대한 API 표준 명세 (인터페이스 집합체)
JPA는 애플리케이션과 JDBC사이에서 동작한다.
ORM (Object-relational mapping)이란?
이름 그대로 객체와 관계형 데이터베이스를 매핑하는 것
ORM 프레임워크란?
ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치를 해결해준다.
ORM 프레임워크를 사용하면 객체를 DB에 저장할때 SQL문을 직접 작성하는 것이 아닌 객체를 자
바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 자동으로 SQL문을 생성해서 DB에 저장한다.
ORM 프레임워크를 사용하면 CRUD 할때마다 쿼리를 작성해야하는 반복적인 작업을 줄일 수 있고
기존의 SQL 중심의 코딩에서 벗어나 객체 중심의 코딩이 가능하다.
즉 생산성이 더 높아진다.
JPA를 사용하는 이유?
- 생산성
JPA를 사용하면 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를 전달하면 된다.
SQL를 작성하고 JDBC API를 사용하는 반복적인 일을 JPA가 대신 해주기 때문에 기존의 데이터베이
스 설계 중심에서 객체 설계 중심으로 변경이 가능하다.
- 유지보수
SQL를 직접 다루게되면 필드 하나만 추가해도 관련된 CRUD를 모두 수정하여야 한다.
JPA를 사용하게 되면 이런 과정을 JPA가 대신 처리해주므로 필드를 추가하거나 삭제해도 수정해야
할 코드가 줄어든다 즉 프로그램의 유지보수가 월등히 편해진다.
- 패러다임의 불일치 해결
객체 모델과 관계형 데이터베이스 모델은 지향하는 패러다임이 서로 다르다.
그러므로 객체를 테이블 구조에 저장하는 데는 한계가 있다.
객체지향 애플리케이션은 정교한 객체 모델링을 할수록 패러다임의 불일치 문제가 더 커진다.
JPA는 연관된 객체를 사용하는 시점에 SQL을 전달하고 같은 트랜잭션 내에서 조회할 때 동일
성도 보장한다. 이러한 과정에서 다양한 패러다임의 불일치를 해결한다.
- 성능
JPA는 애플리케이션과 데이터베이스 사이에서 동작한다.
JDBC API는 같은 트랜잭션 안에서 같은 조회 코드를 두 번 작성하면 SELECT SQL을 사용해서 데이터
베이스와 두 번 통신한다.
JPA는 같은 상황에서 SELECT SQL을 한 번만 데이터베이스에 전달하고 두 번째는 객체를 재사용한다.
- 데이터 접근 추상화와 벤더 독립성
관계형 데이터베이스는 같은 기능도 벤더마다 사용법이 다른 경우가 많다.
애플리케이션은 처음 선택한 데이터베이스 기술에 종속되어 추후 다른 데이터베이스로 변경하기 매
우 어렵다.
JPA는 애플리케이션과 데이터베이스 사이 추상화된 접근 계층을 제공하여 특정 데이터베이스 기술
에 종속되지 않도록 한다.
추후 데이터베이스 변경을 원한다면 JPA 설정만 바꿔주면 된다.
김영한, ⌜자바 ORM 표준 JPA 프로그래밍⌟, 에이콘출판, 2015
'JPA' 카테고리의 다른 글
[JPA] orphanRemoval (0) | 2021.12.02 |
---|---|
[JPA] CASCADE 란? (0) | 2021.12.01 |
댓글