[SpringBoot]2강 JPA란?
JPA는 Java Persistence API 이다.
Java Persistence API는 자바 영속성 API라는 의미로 여기서 영속성은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 일반적으로 램에 저장되는 데이터는 휘발성 데이터로 전기의 공급이 끊기면 사라진다. 이를 자바 프로그램에서 하드디스크(DBMS)에 기록하여 영구적으로 기록할 수 있는 환경을 제공하는 API를 JPA라고 한다.
API(Application Programming Interface)란?
API는 애플리케이션에서 데이터를 소통하기(읽기/쓰기) 위해 사용하는 인터페이스를 말한다.
인터페이스와 프로토콜의 차이
인터페이스(Interface) : 갑을관계의 약속
프로토콜(Protocol) : 서로 동등한 약속
JPA는 ORM 기술이다.
ORM(Object Relational Mapping)
객체(Object)를 데이터베이스에 연결하는 방법론. 데이터베이스에 직접 테이블을 생성(TRM : Table Relational Mapping)하지 않고 인터페이스를 지켜서 자바의 객체를 이용하여 데이터베이스에 테이블이 생성되게 하는 기법이다.
모델링 : 추상적인 개념을 현실 세계에 뽑아 내는 것. 데이터베이스에 있는 데이터를 기반으로 자바에 객체를 생성하는 것.
JPA는 반복적인 CRUD 작업을 생략하게 해준다.
데이터베이스의 데이터와 자바 객체(Object)간의 반복적인 CRUD 작업을 함수로 제공해준다.
JPA가 생략해주는 작업들
- 자바 프로그램이 데이터베이스에 커넥션을 요청하면 세션이 오픈된다.
- 자바 프로그램이 데이터베이스에 쿼리를 전송하여 데이터를 요청한다.
- 자바 프로그램이 응답받은 데이터를 자바 객체로 변경한다.
JPA는 영속성 컨텍스트를 가지고 있다.
영속성 컨텍스트(Persistence Context)
영속성 컨텍스트는 자바에서 데이터베이스와의 모든 CRUD 작업을 관리하는 영역이다. 데이터의 CRUD가 일어나면 자동으로 동기화해 준다. 이 영역에서는 자바 오브젝트 타입으로 변경하여 영구적으로 하드웨어에 기록한다.
JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다.
JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다.
상속(extends)과 컴포지션(Composition 결합)
방언 처리가 용이하여 Migration하기 좋다.
Dialect(방언) 처리가 용이하다는 것은 어떤 데이터베이스를 사용하여도 추상화객체 중간 역활을 하기 때문에 코드 수정없이 사용할 수 있다는 것을 의미한다. 즉, 사용하는 데이터베이스가 Oracle이든 MySQL이든 MariaDB든 사용하는 데이터베이스에 관계없이 사용할 수 있다는 것이다. 이는 유지보수를 용이하게 해준다는 장점이 된다.