JPA는 Java Persistence API 이다.
자바 프로그래밍을 할 때 영구적으로 데이터를 저장하기 위해서 필요한 인터페이스
JPA는 ORM(Object Relational Mapping) 기술이다.
기존에 데이터를 모델링하는 순서는 DB 세상에 있는 데이터를 자바세상에 모델링(TRM)을 해야하는데,
ORM(Object Relational Mapping) 기술로 자바에서 변수와 데이터 타입이 담긴 클래스를 만들어서 실행하면 데이터베이스 테이블을 자동생성한다. (상황 역전) (이때 필요한 것이 JPA가 가진 인터페이스)
반복적인 CRUD 작업을 생략하게 해준다.
select, select all, delete, update, insert 등 CRUD 작업의 기본로직
-> (자바에서 DB로 세션 오픈 시 connection을 가짐. 두 번째 요청 시에 쿼리를 전송하면 DB에서 데이터를 자바에 응답하는데 데이터 타입이 다르므로 자바 object로 변환을 해줘야 함. )
-> 기본적으로 반복되는 작업들을 JPA가 단순하게 처리하도록 도와준다.
영속성 컨텍스트를 가지고 있다.
컨텍스트: Context -> 대상에 대한 모든 정보을 다 알고있다..! 라는 의미를 가진다.
자바는 항상 영속성 컨텍스트를 통해서 DB에 데이터를 저장한다. 즉, DB에서 왔다갔다하는 모든 일련의 데이터들이 자동적으로 영구적 저장이 이뤄진다.
방언 처리가 용이하여 Migration하기 좋다. 유지보수에도 좋다.
JPA는 OOP관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)
JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)
class Team { Int id; String name; String year; } class Player { Int id; String name; Team team; } // Team object 저장