JPA
Java Persistence API의 약자이다. JPA는 framework이 아닌 다른 framework에 의해서 구현될 수 있는 인터페이스이다.
JPA와 Hibernate의 관계
Java Servlet 명세와 같이, Hibernate는 JPA에 호환되는 framework 중 하나이다. Spring은 기본으로 Hibernate를 JPA vendor로 설정한다.
Java ORM이란?
ORM layer는 객체들이 rdb에 있는 table,column과 소통할 수 있도록 변환하는 역할을 한다.
Configuring JPA
@Entity
1
2
3
4
@Entity
public class Musician {
// ..class body
}
이 class와 객체가 persist되어야 함을 JPA에게 알려줌.
@Id
1
2
3
4
@Entity
public class Musician {
@Id
private Long id;
해당 필드가 pk임을 명시
@OneToMany
1
2
3
4
5
6
7
public class Musician {
@OneToMany
@JoinColumn(name="musicianId")
private List<Performance> performances = new ArrayList<Performance>();
//...
}
@JoinColumn은 Performance table의 어느 칼럼으로 Musician entity와 맵핑할 것인지 명시. JPA는 이 정보를 사용하여 object graph를 생성함.
Fetching Strategies
JPA의 default configuration은 아래와 같다.
- One to many : Lazy
- Many to one : Eager
- Many to many : Lazy
- One to one : Eager