ORM이란 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계를 한 다음 중간의 차이를 ORM 프레임워크가 해결(매핑)해주겠다는 것
JPA란 자바 진영의 ORM 기술 표준으로 채택된 인터페이스 모음
ORM이 큰 개념이라면 JPA는 더 구체화된 스펙
을 포함
-> 실제로 동작하는 것이 아니고 어떻게 동작해야 하는지 메커니즘을 정리한 표준 명세
애플리케이션과 JDBC 사이에서 동작을 하면서 개발자는 직접 JDBC API를 사용하는게 아닌 JPA에게 명령
을 하면 JPA는 JDBC API를 사용해서 SQL을 보내고 결과를 받아서 전달
하는 식으로 동작
개발자가 직접 JDBC를 구현하면 SQL에 의존하게 되는 문제가 있어 효율성이 떨어지는 데, 이를 JPA가 이러한 문제를 해결 하기 위해 적절한 SQL문을 생성하고 데이터베이스를 조작해서 객체를 자동으로 매핑해주는 역할 수행
JDBC
: 자바에서 DB프로그래밍을 하기 위해 사용되는 API
JPA 기반 구현체에는 대표적으로 Hibernate, EclipseLink, DataNucleus
이중 Hibernate 가장 자주 사용
JPA를 편리하게 사용할 수 있도록 지원하는 스프링 하위 프로젝트 중 하나
CRUD 인터페이스 제공, 하이버네이트의 엔티티 매니저를 직접 다루지 않고 리포지토리를 정의해 사용
함으로써 스프링이 적합한 쿼리를 동적으로 생성
하는 방식으로 데이터 조작
즉 하이버네이트에서 자주 사용되는 기능을 좀더 쉽게 사용할 수 있게 구현한 라이브러리