Java Persistence API 의 약자로 ORM기술을 사용하기 위한 인터페이스를 제공하는 API이다. ORM프레임워크(ex. Hibernate, EclipseLink 등)를 사용하여 구현할 수 있는 공용 API를 제공한다.
여기서 중요한점은 기본적으로 인터페이스이기에 JPA자체만으로 실체 구현체는 없다는 것이다.
❓ ORM
Object-Relational-Mapping 의 약자로써 의미그대로 Java에서 사용되는 객체와 DB에서 사용하는 Table간의 구조를 연결시켜주는 것을 의미한다.
⁉️ Hibernate
대표적인 JPA의 구현체로써 java로 따지면 interface와 class의 관계에서 class의 역할이라고 생각하면 된다.
Spring에서 제공하는 라이브러리 중 하나로, JPA 위에 추가적인 기능을 제공하여 JPA를 사용한 개발을 더욱 쉽고 간편하게 해주는 기술이다.
대표적으로 Repository라는 인터페이스를 제공하는데, 라이브러리에 정의된 규칙대로 메서드를 입력하면 Spirng이 알아서 해당 메서드 이름에 적용되어 있는 쿼리를 날리는 구현체를 만들어 Bean으로 등록해준다.
단순히 저장된 쿼리만 사용하는것이 아니라 사용자 정의 쿼리 또한 가능하다.
JPA를 사용하는 이유는 장점과 직결된다.
❓ Spring-data-JPA를 사용하지 않고 JPA만 사용한다면?
Spring에서 JPA를 사용하려면 EntityManager라는 정의된 클래스를 사용하여 데이터베이스 기능을 사용해야하는데 EntityManager는 영속성콘텍스트를 관리한다.
이는 다음 포스팅에서 알아보자...