본문 바로가기

Spring/JPA

📝 JPA 가 무엇인가요?

1. JAP (Java Persistence API, 자바 ¹영속성 ²API)

자바로 만든 객체와 데이터베이스 테이블을  ³ORM 기술을 이용하여 매핑하고, 사용하는 방식을 정의한 ⁴인터페이스

 

cf) Spring Data JPA: JPA 사용 편이를 위해 만들어진 모듈로, JPA를 한 단계 추상화시킨 Repository라는 인터페이스 사용

 

1) 영속성(Persistence): 지속적인 것, 영원한 것을 뜻하는 단어로 자바로 만든 객체를 DB에 지속하는 것

2) API(Application Programming Interface):어플리케이션(소프트웨어) 간 서로 통신할 수 있게하는 약속

3) ORM(Object Relational Mapping): 애플리케이션 클래스와 RDB(Relational DataBase)의 테이블을 Mapping 하는 것

4) 인터페이스:  다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스

 

JPA 인터페이스를 구현한 대표적인 오픈소스 Hibernate(ORM 대표 프레임 워크) 

JPA 2.1표준 명세를 구현한 3가지 구현체: Hibernate, EclipseLink, DataNucleus

 

2. JPA의 동작 과정

애플리케이션과 JDBC사이에서 동작함

개발자가 JPA를 사용하면 JPA내부에서 JDBC API를 사용하여 SQL을 호출하고 DB와 통신 함(개발자가 JDBC API쓰는 것x)

 

- 저장과정: 개발자가 JAP에게 객체를  넘김-> JPA는 객체의 엔티티를 분석하고 INSERT SQL을 생성, JDBC API를 사용하여 SQL을 DB에 보냄

 

- 조회과정:

개발자는 조회하고 싶은 객체의 PK값(기본키)를 JPA에게 넘김

JDBC API를 사용하여 SQL을 DB에 보내고 DB로부터 결과를 받아옴

결과(ResultSet)를 객체에 모두 매핑함

 

3. JPA 특징

SQL중심적인 개발에서 객체 중심으로 개발

생산성: 간편하게 CRUD 할 수 있어서 생산성이 좋다

유지보수: 기존 유지보수는 필드 변경 시 모든 SQL을 수정해야 하는데 JPA는 필드만 추가하면 됨

쿼리를 JPA가 만들어 주기 때문에 Object 와 RDB간의 패러다임 불일치를 해결할 수 있음