
개발시간 증가, 유지보수 저하
SQL에 의존하여 개발
패러다임 불일치
상속
DB에서 상속은 Super/Sub type인데, Super type은 sub type의 속성을 공유하지 못해 다른 테이블로 분리
객체지향 상속은 super type의 속성을 공유하기에 패러다임 불일치 발생
데이터베이스 테이블에 맞춘 객체 모델
public class Menu {
private int menuCode;
private String menuName;
private int menuPrice;
private int categoryCode; // hot spot
private String orderableStatus;
}
객체 지향 언어에 맞춘 객체 모델(JPA)
public class Menu {
private int menuCode;
private String menuName;
private int menuPrice;
private Category categoryCode; // hot spot
private String orderableStatus;
}
연관관계
객체 그래프 탐색
방향성
동일성 보장 문제
| 분류 | JPA | MyBatis |
|---|---|---|
| 역할 | ORM | SQL Mapper |
| Difficulty | 복잡한 쿼리 처리 번거로움 DB 테이블이 변경되고 객체매핑이 변경되어야 함 | 직접 매핑, 수정 시, Mapper와 객체까지 모두 수정 필요 DB 스키마 변경시 쿼리만 변경하면 됨 |


JPQL, NativeQuery는 별도로 commit(flush)됨
종류
use
영속성 Entity로 저장 후 반환쓰기 지연 저장소에 해당하는 쿼리 저장쓰기 지연 저장소에 해당하는 쿼리 저장Entity Manager Factory:
Entity Manager:
per transaction, per request로 생성됨Persistence Context

| @Id | Entity | SnapShot |
|---|---|---|
| m1 | menu1(pk) | menu1 Snapshot |
| m2 | menu2(pk) | menu2 Snapshot |
| ... | ... | ... |