영속성 (persistence) : 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성은 파일 시스템, DB 등에 활용하여 구현
Interface : 상하관계가 존재하는 약속
protocol : 권리가 동등한 약속
🔸JPA = Java Persistence Application Programming Interface
자바 프로그램을 할때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스
ORM = Object Relational Mapping : Object를 먼저 만들고 JPA 인터페이스를 통해서 데이터베이스를 자동 생성할 수 있다.
🔸JPA 관점에서 객체를 생성하면 DB 테이블을 자동 생성해준다.
원래는 class를 통해서 데이터베이스 테이블의 데이터를 모델링해야한다.
데이터베이스 테이블 -> class
Class Team {
int id;
String name;
String year;
}
Select(1건), Select All(전체), Delete, Update, Insert
Java <-> 반복 로직 <-> DB
🔸JPA 사용시 전송된 쿼리에 대한 응답이 있을때 이런 반복 로직을 함수 하나로 쉽게 해결 할 수 있다.
context : 어떤 대상에 붙는 순간 그 대상의 모든 정보
A 데이터 <-> 영속성 컨텍스트(모든 데이터 정보를 가지고 있음) <-> DB
먼저 A 데이터를 영속성 컨텍스트에 던진다음, 영속성 컨텍스트가 DB로 보내 저장
영속성 컨텍스트에서 A 데이터를 삭제하고 던지면 DB에서도 A 데이터 삭제 (동기화)
데이터베이스 테이블이 FK를 가지게 되면 자바 class에서 오브젝트 객체를 가지게 되는데 이렇게 하면, 실제 DB테이블과 불일치하게 된다. 하지만 JPA에 ORM을 이용하면 해결 가능하다. 자바는 객체저장이 가능하다.
상속, 컴포지션(결합), 연관관계
스프링 <-> JPA <-> (추상화 객체 : 다양한 DB 종류) <-> DB : JPA가 처리할 수 있는 DB 종류가 다양하다.