* JPA (Java Persistence API)
- 스프링에서 많이 활용되고 있으며, 스프링이 제공하는 것이 아닌 이름에서 알 수 있듯이 자바가 제공하는 API이다.
- 자바 진영의 ORM 기술 표준
-> ORM(Object-Relational Mapping) : 객체와 관계형 DB를 매핑한다는 의미
- JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고 객체를 자동으로 Mapping해준다.
* Hibernate
- 자바 진영의 ORM 프레임워크 중 가장 많이 사용되는 성숙한 프레임워크
- JPA가 Hibernate를 기반으로 만들어진 기술 표준이다.
* JPA를 사용해야하는 이유
- 생산성 증가 : JPA에 객체를 전달만 하면 되므로 SQL을 작성할 필요가 없고 JDBC API를 사용하는 반복적인 일을 대신 처리해주어 생산성 증가
- 유지보수 용이 : 쿼리 수정을 해야할 때 원래는 DTD 필드도 모두 변경해야 하지만 JPA는 엔티티 클래스 정보만 변경하면 된다.
- 성능 증가 : JPA는 동일한 쿼리에 대한 캐시 기능을 지원해주며 어플리케이션과 DB 사이에 다양한 성능최적화 기능을 제공한다.
* JPA 어노테이션 종류
엔티티명 | 설명 |
---|---|
@Entity | 테이블과 매핑하고자 하는 클래스. 이 클래스를 엔티티 클래스라 부름 |
@Table | 엔티티 클래스에 매핑할 테이블 정보를 알려준다. 생략시 클래스 이름이 테이블이름으로 매핑됨 |
@Id | 엔티티클래스의 필드를 테이블의 기본키에 매핑 |
@Column | 필드를 테이블의 컬럼에 매핑한다. 생략 시 필드명을 테이블의 컬럼명으로 매핑함 |
@Transient | DB에서 사용하지 않는 속성일 경우 표시. 임시 데이터 저장용으로 사용 가능하다. |
@GeneratedValue | 새로운 데이터가 생성될 때마다 마지막 PK에서 +1을 해준다. auto increment 기능 |