Java 진영에서 만들어진 데이터베이스와 JVM 사이의 패러다임 불일치를 해결하기 위한 ORM Specification.
반복적인 CRUD SQL 작업을 제거하고 보다 객체 지향적인 방법으로 영속성 저장소를 다루기 위해 탄생함.
데이터 접근을 추상화하고 벤더와의 독립성을 보장한다.
주 구현체로는 hibernate, eclipseLink 등등이 존재한다
SQL 직접 다룰때 생기는 문제점
문제의 원인
JPA의 기본 구성
영속성 컨텍스트(persistence context)
엔티티
@Entity("MEMBER")
@Table(name = "member")
data class Member(
@Id val id,
@Column("name) val userName,
@Enumerated(EnumType.String) val type,
@Temporal(TemporalType.TimeStamp) val date
)
엔티티 ID
연관 관계
연관성의 방향