JPA란 Java Persistance API 이다
API (Application Programming Interface) : 프로그램 사이 데이터 통신 규칙(상하관계가 존재) ↔ Protocol
JPA는 ORM 기술이다.
Team 테이블 | |
---|---|
id | int |
name | varchar |
year | varchar |
Class Team{
private Long id;
private String name;
private String year;
}
JPA 반복적인 CRUD 작업을 생략하게 해준다.
위와같은 반복로직을 JPA 함수를통해 처리할 수 있다.
JPA 영속성 컨텍스트를 가지고 있다
자바의 객체정보의 name을 수정 → 영속성 컨텍스트에 반영 →DB상의 name과 불일치 → update 쿼리를 실행하여 DB 상의 name 업데이트 → 객체-영속성컨텍스트-DB 모든 정보 동기화 완료
JPA 는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다(DB는 객체 저장 불가능)
public class Team {
private int id;
private String name;
private String year;
}
public class Player {
private int id;
private int name;
// private int teamId; // FK로 teamId 를 가져올 경우 두번의 select쿼리, 혹은 조인으로 팀 데이터를 가져와야함
private Team team; // JPA를 통해 자바가 주도권을 가지고 객체방식으로 저장 가능
}
Class Car {
int id;
String name;
String color;
Engine engine; // 콤포지션
}
Class Engine {
int id;
int power
}
Car | Engine | |||||
---|---|---|---|---|---|---|
id | name | color | engine_Id | id | power | |
1 | R8 | black | 2 | → | 1 | 2000 |
2 | Eclass | white | 1 | 2 | 4000 |
Class BaseEntity {
LocalDateTime createdAt;
LocalDateTime updatedAt;
}
Class Car extends BaseEntity {
int id;
String name;
String color;
Engine engine;
}
Class Engine extends BaseEntity{
int id;
int power
}