JPA는 Java Persistence API입니다. 자바 진영에서 ORM(Object Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음입니다. 그 말은 실제적으로 구현된 것이 아니라 구현된 클래스와 '매핑'을 해주기 위해 사용되는 프레임워크입니다. JPA를 구현한 대표적인 오픈 소스로는 Hibernate라고 합니다.
애플리케이션 Class와 RDB(Relation DataBase)의 테이블을 연결한다는 뜻으로, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것으로 보면 됩니다.
간단하게 말하자면 객체는 객체대로 설계하고, 관계형 DB는 관계형 DB대로 설계한 뒤, ORM 프레임웤그가 중간에서 매핑해주는 것입니다.
( 장점 )
( 단점 )
: 현재 JAVA 진영에서의 ORM 기술 표준으로서 인터페이스의 모음입니다. 실제로 동작하는 것은 아닙니다. JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate입니다.
JPA는 반복적인 CRUD SQL을 처리해줍니다. JPA는 매핑된 관계를 이용해서 SQL을 생성하고 또 실행하고, 직접 SQL을 작성할 수 있는 네이티브 SQL 기능도 제공해줍니다.
: JPA는 java 애플리케이션과 JDBC 사이에서 동작합니다.
: 사용자가 JPA를 쓰면, JPA 내부에서 JDBC API를 사용해서 SQL을 호출하여 DB와 통신하는 것입니다. (사용자는 직접 JDBC API를 사용하지 않습니다.)
: MemberDAO에서 객체를 저장하고 싶을 때, 사용자가 JPA에 Member객체를 넘기면 JPA는 Member 엔티티를 분석하고 + INSERT SQL을 생성한 후 + JDBC API를 사용하여 SQL을 DB에 날립니다.