ORM(Object-relational Mapping)
- 어플리케이션 설계는 객체 지향적으로 설계한다.
- 관계형 데이터베이스 또한 외래키를 활용해 설계한다.
- 서로 다른 두 패러다임의 불일치를 해소를 위해 ORM 기술을 사용한다.
JPA(Java Persistence API)
- 현재 자바 진영의 ORM 기술에 대한 API 표준 명세다.
- 인터페이스의 모음집이다.
- 따라서, JPA 사용 시 특정 구현 기술에 대한 의존도를 줄일 수 있다.
- 그러면, JPA를 구현한 ORM 프레임워크를 선택해야한다.
- Hibernate는 대표적인 JPA 구현체이다.
JPA는 어플리케이션과 JDBC API 사이에서 작동한다.
기존 문제 해결
반복적 CRUD 코드 작성이 줄어든다.
SQL을 직접 다루지 않는다.
- 객체를 데이터 베이스에 저장할 때, JPA가 제공하는 API를 사용한다.
- 그러면 이후에 JPA가 적절한 SQL을 생성해서 데이터베이스에 전달한다.
객체 그래프 탐색
- 어플리케이션 단에서 작성된 필드만 보고, 탐색 범위를 알 수 있다.
- 연관된 객체를 사용하는 시점에 적절한 SQL을 실행한다.
- 지연 로딩이라고 한다.
동일성 보장
- JPA는 같은 트랜젝션일 때, 같은 객체가 조회 되는 것을 보장한다.
- 동등성 뿐만 아니라, 동일성을 보장한다.