간단히 말해서 SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기라 할 수 있다. 자바 문법으로 SQL을 조작할 수 있도록 도와주는 역할을 한다고 할 수 있다.
좀 더 정확하게 말하면 Java Persistence API 의 약자로 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. 대표적인 오픈소스로 Hibernate가 있다.
위 문장의 이해를 돕기 위해 관련 용어들을 하나씩 풀어서 설명해보겠다.
Persistence(영속성) : 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다.
영속성을 갖지 않은 데이터는 메모리에만 존재하기 때문에 프로그램이 종료되면 모두 잃어버리게 된다.
때문에 파일시스템(txt와 같은 파일로 저장), 관계형 데이터베이스(MongoDB와 같은 DB) 혹은 객체 데이터베이스(MySQL와 같은 DB)를 활용하여 데이터를 영구적으로 저장하여 영속성을 부여한다.
ORM : Object-Relational Mapping 의 약자로 일반적으로 알고 있는 어플리케이션 Class와
RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻. 어플리케이션의 객체를 RDB테이블에 자동으로 영속화 해주는 것이라고 보면된다.
JDBC : DB에 접근할 수 있도록 자바에서 제공하는 API. 모든 JAVA Data Access 기술의 근간이다.
Spring JPA : JPA를 쉽게 사용하기 위해 스프링에서 제공하고 있는 프레임워크이다.
JPA 하이버네이트 : 하이버네이트는 JPA 구현체의 한 종류이다.
하이버네이트가 지원하는 메서드 내부에서는 JDBC API가 동작하고 있으며, 단지 개발자가 직접 SQL을 작성하지 않을 뿐이다. HQL(Hibernate Query Language)라 불리는 매우 강력한 쿼리 언어를 포함하고 있다.