ORM (Object-Relational Mapping)
데이터베이스 (H2, MySQL)객체(Object)와 관계형 데이터를 매핑하기 위한 기술. 객체지향 언어와 데이터베이스 사이에 패러다임 불일치(서로 표현 방식이 다름)로 인한 문제를 해결해준다. 이 둘 간의 패러다임 불일치 때문에 개발자는 더 많은 코드를 작성해야 하며, 이는 반복적이고 실수하기 쉬운 작업이 된다. 그렇기 때문에 개발자는 객체지향적인 설계에 집중 할 수 없게 된다.
ORM을 이용하면 SQL Query가 아닌 직관적인 코드로서 데이터를 조작할 수 있다.
JPA(Java Persistence API)
JPA는 애플리케이션과 JDBC사이에서 동작하며 개발자가 직접 JDBC API를 사용하지 않게 JPA가 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다. JPA는 특정 기능을 하는 라이브러리가 아니며 자바 어플리케이션에서 관계형 데이터베이스를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐이다.
Spring Data JPA
스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 모듈이다. 예상 가능하고 반복적인 코드들을 대신 작성해줘 코드를 줄여준다. 이는 JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어진다. 사용자가 Repository인터페이스에 정해진 규칙해도 메소드를 입력하면 Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록 해준다.
Spring Data JPA는 항상 hibernate와 같은 jpa provider가 필요하다.
참고: 링크텍스트