Java Persistence API

- JPA : Java Persistence Api
- JPA는 자바 ORM 기술에 대한 API 표준 명세. 쉽게 이야기해서 인터페이스를 모아둔 것임. 따라서 jpa를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야 하는데 Hibernate가 가장 대중적임
- Data에 접근하기 위한 api 규격
- According to the JPA specification, all entity classes are required to have a public or protected no-argument constructor.



- JPA는 인터페이스
- JPA 구현체로써 많은 것들이 있지만 그 중 Hibernate의 사용비율이 압도적으로 높음
- 그중에 자주 쓰이는 기능들을 Spring에서 사용하기 쉽도록 Spring framework에서 묶음으로 제공하는 것이 Spring Data JPA
JDBC Dependency
- JPA-based application도 JDBC를 아래에서 사용하고 있음. database interaction을 위해 JDBC API사용함
- JPA가 추상화 레이어의 역할을 함으로써, 저수준의 JDBC call을 가려줌
JPA를 사용해야 하는 이유
- 생산성 증진
- SQL에 의존적인 개발에서 탈피하여, 객체중심으로 생산적인 개발이 가능하다.
- 객체와 관계형테이블의 패러다임 불일치를 해결해줌
- 객체지향 프로그래밍은 추상화, 캡슐화, 상속, 다형성 등을 제공한다.
- 관계형 데이터베이스 데이터 중심으로 구조화 되어있으며, OOP의 특징을 지원하지 않는다.
- jpa를 사용하게되면 이와같은 OOP의 특징을 활용할 수 있음
- 객체 측면에서는 정교한 객체 모델링을 할 수 있고 관계형 데이터베이스는 데이터베이스에 맞도록 모델링하면 됨. 둘을 어떻게 매핑해야 하는지 매핑 방법만 ORM 프레임워크에게 알려주면 알아서 해줌!