* JPA (Java Persistence API)

​ - 스프링에서 많이 활용되고 있으며, 스프링이 제공하는 것이 아닌 이름에서 알 수 있듯이 자바가 제공하는 API이다.

​ - 자바 진영의 ORM 기술 표준

​ -> ORM(Object-Relational Mapping) : 객체와 관계형 DB를 매핑한다는 의미

​ - JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고 객체를 자동으로 Mapping해준다.

* Hibernate

​ - 자바 진영의 ORM 프레임워크 중 가장 많이 사용되는 성숙한 프레임워크

​ - JPA가 Hibernate를 기반으로 만들어진 기술 표준이다.

* JPA를 사용해야하는 이유

  1. 생산성 증가 : JPA에 객체를 전달만 하면 되므로 SQL을 작성할 필요가 없고 JDBC API를 사용하는 반복적인 일을 대신 처리해주어 생산성 증가
  2. 유지보수 용이 : 쿼리 수정을 해야할 때 원래는 DTD 필드도 모두 변경해야 하지만 JPA는 엔티티 클래스 정보만 변경하면 된다.
  3. 성능 증가 : JPA는 동일한 쿼리에 대한 캐시 기능을 지원해주며 어플리케이션과 DB 사이에 다양한 성능최적화 기능을 제공한다.

* JPA 어노테이션 종류

엔티티명 설명
@Entity 테이블과 매핑하고자 하는 클래스. 이 클래스를 엔티티 클래스라 부름
@Table 엔티티 클래스에 매핑할 테이블 정보를 알려준다. 생략시 클래스 이름이 테이블이름으로 매핑됨
@Id 엔티티클래스의 필드를 테이블의 기본키에 매핑
@Column 필드를 테이블의 컬럼에 매핑한다. 생략 시 필드명을 테이블의 컬럼명으로 매핑함
@Transient DB에서 사용하지 않는 속성일 경우 표시. 임시 데이터 저장용으로 사용 가능하다.
@GeneratedValue 새로운 데이터가 생성될 때마다 마지막 PK에서 +1을 해준다. auto increment 기능