본문 바로가기
Back-end

JPA 개념

by 신재권 2021. 7. 18.

JPA란 ?

Java Persistence API이다.

Persistence(영속성) : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

즉 JPA는 영구히 데이터를 기록할 수 있게 조성해준다.

API(애플리케이션 A , 프로그래밍 P, 인터페이스 I)

애플리케이션은 프로그램이고, 프로그래밍은 프로그램을 만들기 위한 방법,

인터페이스를 통해 프로그래밍을 한다.

프로토콜/인터페이스 는 둘다 약속을 의미한다. 하지만 살짝 의미가 다르다.

인터페이스는 상하관계가 존재하는 약속이다.

프로토콜은 서로 동등한 관계에 있다.

즉 Java Persistence API(JPA)는 자바 프로그래밍을 할때 데이터를 영구히 저장하게 할 수 있는 인터페이스이다.

 

ORM 기술이다.

Object Relational Mapping : 오브젝트를 데이터 베이스에 연결하는 방법

데이터를 밀어 넣는 작업 input → DML (Delete, Update, Insert)

데이터를 꺼내 오는 작업 Output → (Select)

자바와 DB의 데이터 타입은 다르다.

클래스를 통해 데이터베이스를 모델링 해야 한다.

즉 DB 데이터를 자바에 모델링하는 것

클래스를 통해서 DB 테이블을 생성 가능하다.

JPA의 인터페이스로 구현 → ORM

 

반복적인 CRUD 작업을 생략하게 해준다.

자바로 DB의 세션을 오픈 후, Connection 상태가 된다.

후에 두번째 부터는 쿼리를 전송이 가능하다.

즉 쿼리로 테이블의 데이터를 담을 수 있고, DB는 Data를 다시 반환한다.

DB와 Java의 데이터의 타입이 다르기 때문에 자바 오브젝트로 변경해주는 반복 작업이 필요하다.

즉 이런일을 줄이게 해주는 것이 JPA이다.

위의 모든 작업들을 JPA에서는 함수 하나로 제공해준다.

함수만 쓰기만 하면 반복작업을 하지 않아도 된다.

Read Delete Update Create (CRUD) 반복되는 작업을 단순하게 할 수 있도록 도와준다.

 

영속성 컨텍스트를 가지고 있다.

영속성 : 데이터를 영구적으로 저장할 수 있도록 해줌

데이터는 DB에 저장한다.

컨텍스트(context) : 대상의 모든 정보

영속성 컨텍스트 를 통해 자바가 DB에서 데이터를 가져온다. 항상 영속성 컨텍스트를 통해 데이터를 가져오거나 저장하고, 영속성 컨텍스트 안에서 일어나는 일은 자동으로 처리된다.

 

DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다.

DB는 객체 저장이 불가능하지만 자바는 객체 저장이 가능하다.

자바에서는 객체 저장을하고 DB에 밀어 넣을 때는 JPA가 자동으로 외래키 등의 방법으로 넣어준다.

 

OOP의 관점에서 모델링을 할 수 있게 해준다.(상속, 콤포지션, 연관관계)

 

방언 처리가 용이하여 Migration하기 좋다, 유지보수에도 좋다

db의 언어는 서로 함수가 다를 수도 있다. 만약 db언어를 변경을 해야한다면 많은 곳을 고쳐야 되지만 추상화 객체를 JPA로 다뤄 DB에 알아서 넣어준다.

 

(출처 : Youtube 데어 프로그래밍 )

https://www.youtube.com/channel/UCVrhnbfe78ODeQglXtT1Elw
 

데어 프로그래밍

getinthere@naver.com

www.youtube.com

 

'Back-end' 카테고리의 다른 글

SQL문법 (3)  (0) 2021.07.25
Springboot 동작원리  (0) 2021.07.19
Spring 개념  (0) 2021.07.18
SQL 문법(2)  (0) 2021.07.18
12 지네릭스, 열거형, 애너테이션 (1)  (0) 2021.07.17