자바 진영의 ORM 기술 표준
JPA는 인터페이스의 모음이며, 하이버네이트는 JPA의 구현체 중 하나이다.
객체와 관계형 데이터베이스를 각각 설계한 후 ORM 프레임워크가 중간에서 매핑해주는 역할을 한다.
각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다른데,이 때 SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능을 데이터베이스 방언이라고 한다. JPA는 특정 데이터베이스에 종속되지 않으며, 지정한 데이터베이스에 맞게 SQL문을 생성한다.
pom.xml에 JPA 하이버네이트 라이브러리 추가/META-INF/persistence.xml 생성 -> JPA 설정 파일
EntityManagerFactory는 하나만 생성하여 애플리케이션 전체에서 공유EntityManager는 쓰레드 간에 공유X (사용하고 버린다.)필요한 데이터만 DB에서 불러오기 위해서는 결국 검색 조건이 포함된 SQL이 필요하다. JPA는 SQL을 추상화한 JPQL이라는 객체지향 쿼리 언어를 제공한다.