: 자바 프로그램을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스
: 인터페이스를 통해 프로그래밍함으로써 만들어지는 프로그램
: Object를 DB에 연결하는 방법
자바 클래스 먼저 만들어 -> DB 자동 생성
- jpa의 인터페이스 이용함
자바 --input--> DB 테이블 // DML(Delete Update Insert)
자바 <--output-- DB 테이블 // select
자바와 DB 테이블의 데이터 타입 다름
-> 모델링!!
ID | int |
Name | varchar |
year | varchar |
class Team{
int id;
String name;
String year;
}
CRUD
select // 1개 데이터 // R
selct all // 전체 데이터 // R
delete // 1개 데이터 // D
update // 1개 데이터 // U
insert // 1개 데이터 // C
CRUD 작업 과정 : 반복적 과정 -> jpa 인터페이스로
1> 자바가 DB에 connection 요청
2> DB가 확인 후 세션 오픈
3> 연결 (자바가 connection 가짐)
4> 자바가 쿼리 전송
5> DB가 쿼리 결과 Data 를 응답
6> DB가 보내준 data를 자바 object로 변경
...
영속성 : 데이터를 영구적으로 저장 (DB에)
컨텍스트(context) : 대상의 모든 정보
자바는 DB 속 데이터 찾을 때 영속성 컨텍스트 통해 접근
ex) DB에만 있고 영속성컨텍스트에는 없는 정보
자바가 그 정보 요청
-> 영속성컨텍스트는 DB로 부터 그 데이터(DB 형식) 받아 영속성 컨텍스트에 저장(java object 형식)
-> 자바로 보냄
영속성컨텍스트 속 데이터와 DB 속 데이터는 동기화됨
ID | Name | year |
1 | 롯데 | 1990 |
2 | NC | 2005 |
ID | Name | teamId |
1 | 이대호 | 1 |
2 | 공필성 | 1 |
3 | 기득염 | 1 |
4 | 홍길동 | 2 |
class Team{
int id;
String name;
String year;
}
class Player{
int id;
String name;
Team team; // 객체지향 BUT) DB와 불일치
// DB로 ORM 시, int teamid의 querykey로 DB에 저장됨
}
class Car extends EntityDate{
int id;
String name;
String color;
Engine engine;
}
class Engine extends EntityDate{
int id;
int power;
}
class EntityDate{
TimeStamp createDate;
TimeStamp updateDate;
}
jpa가 DB 테이블 자동생성
Carid | name | color | engineId | createDate | updateDate |
1 | BHW | white | 2 | ||
2 | sonata | black | 1 | createDate | updateDate |
id | power | ||
1 | 2000 | ||
2 | 4000 |
출처 : 인프런 "스프링부트 개념정리(이론)" 4~7강
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/dashboard