JPA => Java Persistence API
영속성 -> 프로그램의 실행이 종료가 되어도 사라지지 않는 데이터의 특성
API (Application Programming Interface)
Interface -> 약속
JPA => ORM 기술 (Object Relational Mapping)
DB 세상에 있는 데이터 <-> Java 세상에 있는 데이터로 모델링
ex) varchar <-> String
Object(Class) -> JPA를 이용해서 -> Table(DB) 생성
반복적인 crud X
1) Java -> DB에 접근 요청 (세션 오픈)
2) Java -> DB에 쿼리 날림 (Connection)
3) DB -> Java에 Data를 보냄
4) Data (Java Object로 모델링)
==> JPA가 함수 하나로 제공
JPA는 영속성 컨텍스트 지님
context => 대상에 대한 모든 정보
Java에서 DB에 데이터를 저장하거나 select문으로 가져올 때 일련의 모든 정보들을 영속성 컨텍스트가 다 가지고 있음
(Java에서 바로 DB에 데이터가 저장되는 것이 아니라 영속성 컨텍스트(Object type)를 거침 => git에서 인덱스 영역 느낌?)
JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공 (DB에 객체 저장 불가능)
ex) Java에서 선수 클래스에 팀(객체)를 정보로 가지고 있을 때 DB에 넣으면 ORM이 알아서 외래키를 걸어줌
JPA는 OOP의 관점에서 모델링을 가능하게 함 (상속, 컴포지션, 연관관계)
방언 처리에 용이하여 Migration하기 좋음, 유지보수에도 좋음
=> 수 많은 DBMS에 지원해줌 (MySQL, MariaDB 등)
위의 내용은 최주호님의 인프런 '스프링부트 개념정리' 내용을 참조했습니다.