자바 프로그램을 할때 영구적으로 데이터를 저장하기 위해서 필요한 인터페이스
API = 애플리케이션 (A) : 프로그램
프로그래밍 (P) : 프로그래밍
인터페이스 (I) : 인터페이스 = 상하관계가 존재하는 약속 / 프로토콜 = 동등한 관계
ORM(Object Relational Mapping) : object를 데이터베이스에 연결하는 방법론
인터페이스의 규칙을 지키며 자바에서 클래스를 만들어서 실행을 하면 데이터베이스에 테이블이 자동으로 생성되기 하는 기법
= 나의 하인
insert - Create
select,selectAll - Read
update - Update
delete = Delete
-> 반복되는 작업들을 JPA(함수)가 단순하게 처리되도록 도와줌
영속성 : 데이터 -> 영구적으로 저장
컨텍스트 : 대상에 대한 모든 정보를 가지고 있는 것
자바가 데이터베이스에 저장해야 하는 모든 메타 데이터 정보들을 영속성 컨테스트가 다 들고 있다
자바는 항상 영속성 컨테스트를 통해서 데이터 베이스를 저장 <-> 데이터베이스에 있는 데이터 영속성컨텍스트를 통해서 데이터가 자바에 전달
=> 자동으로 처리
DB는 객체저장이 불가능 하지만 자바는 객체저장이 가능! 자바에서 프로그래밍 할때는 객체를 저장하고 디비에 넣을때는 JPA가 자동으로 FOREIGN KEY를 집어 넣어준다
예) 오라클 -> mysql 바뀌게 되면 스프링에 있는 많은 코드들이 달라져야 하는데 추상화객체를 바라보고 JPA를 이용하면 뭘 이용하던간에 상관이 없다