현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이라고 할 수 있다.
실제로 동작하는 것이 아닌, 구현된 Class와 mapping해주기 위해 사용되는 frame-work이다.
JPA 인터페이스를 구현한 대표적인 오픈 소스로는 Hibernate가 있다.
객체 관계 매핑이라는 뜻으로, 객체는 객체대로 RDB는 RDB대로 설계한다.
ORM 프레임워크가 중간에서 연결(mapping)해준다.
어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것을 의미한다.
JPA는 JAVA Application과 JDBC 사이에서 동작
JPA를 사용하면, JPA 내부의 JDBC API를 사용하여 DB와 통신 (우리가 직접 JDBC API를 사용하는 것이 아니다.)
ex) MemberDAO에서 객체를 저장하고 싶을 때
개발자 : JPA에 Member 객체를 넘긴다.
JPA : member entity를 분석 - insert SQL을 생성 - JDBC API를 사용하여 SQL을 DB로 전송
ex) member 객체를 조회하고 싶을 때
개발자 : member의 pk값을 JPA에 넘겨줌
JPA : entity의 mapping 정보를 바탕으로 적절한 Select SQL을 생성 - JDBC API를 사용하여 SQL을 DB로 전송 - DB로부터 결과를 반환 - ResultSet를 객체에 모두 mapping
Entity Name | Explanation |
---|---|
@Entity | class를 table과 매핑한다고 JPA에게 알려주는 기능. 해당 어노테이션이 붙은 클래스를 entity class라고 한다. |
@Table | entity class에 mapping할 테이블 정보를 알려준다. 이 이름을 생략하면, 클래스 이름을 테이블 이름으로 매핑한다. |
@Id | entity class의 field |
@Column |
[1] https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html
[2] https://dbjh.tistory.com/77
[3] https://mkil.tistory.com/526