Java진영 ORM 표준인 JPA에 대해 설명한다.
요즘은 객체지향으로 모든 프로그램을 만드려한다.
데이터를 저장하고 빠르게 읽어오기 위해 데이터베이스를 사용하는데 사용되는 데이터 베이스의 대부분은 RDB(관계형데이터베이스)이다.
객체를 관계형 데이터 베이스에 빠르게 저장하는 방법이 없을까? (ORM의 탄생배경)
객체는 참조를 이용해 연관관계를 표현한다.
class A{
B b = new B();
}
A a = new A();
a.b 처럼 '.'으로 연관관계에 있는 객체에 접근 가능하다.
하지만 데이터 베이스는 FK로 연관관계를 표현한다.
A 테이블
A_ID | FK_B_ID |
---|
B 테이블
B_ID | NAME |
---|
만약 A에서 B를 접근 하고 싶다면
select * from A join B on A.FK = B_ID
객체는 참조를 통해
데이터 베이스는 FK를 통해
객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다.
'.'을 찍어서 연관된 객체를 탐색하는 것을 객체 그래프 탐색
이라 한다
Java Persistence API로
인터페이스의 모음이다.
Object-relational mapping 으로
객체는 객체스럽게 설계하고
테이블은 테이블 스럽게 설계한다.
여기서 객체와 테이블을 매핑해 주는 것이 ORM이다.
https://studio108.tistory.com/23
https://velog.io/@chois90/Spring-ORM-JPA-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%A6%AC
https://uchupura.tistory.com/134