: Java Persistence API, Java 진영에서 사용하는 ORM 기술의 표준 사양
☝️ 표준 사양이라는 것은 Java의 인터페이스로 사양이 정의되어 있어 이것의 구현체를 따로 생성하거나 이미 존재하고 있다는 의미
: JPA를 구현한 여러 구현체 중의 하나
: JPA의 P, Persistence의 의미를 영속성, 지속성이라는 뜻을 가진다. 즉, 영속성 컨텍스트란 테이블과 매핑되는 엔티티 객체 정보를 저장해 애플리케이션 내에 오래 지속되도록 하는 역할을 한다.
INSERT
문이 저장되어 테이블에 해당 객체를 테이블로 매핑할 준비를 한다.☝️ 쓰기 지연 SQL 저장소 영역에서는 한번 사용된 쿼리문은 삭제된다.
: JDBC와 동일하게 @Entity
애너테이션을 사용한다.
클래스 명과 테이블 명을 동일하게 할 때는 name
애트리뷰트를 추가할 필요가 없으나, 다르게 설정할 시에는 @Entity(name="테이블명")
과 @Table(name="테이블명")
으로 설정할 수 있다.
: 기본키로 설정을 원하는 필드변수에 해당 애너테이션을 추가하면 데이터베이스 테이블의 기본키 컬럼과 매핑된다.
☝️ 엔티티 매핑을 할 때,
@Entity
와@Id
는 필수로 들어가야 하는 애너테이션이지만@Table
은 선택적으로 사용한다.
: 기본키의 생성 전략을 지정하는 애너테이션이다.
1. 기본키 직접 할당 : 애플리케이션 코드 상에서 기본키를 직접 할당해주는 방법
2. 기본키 자동 생성 : @GeneratedValue의 애트리뷰트(strategy)를 설정하여 자동 생성한다.
- IDENTITY
- SEQUENCE
- TABLE : 별도의 키 생성 테이블을 사용하는 전략으로 잘 사용하지 않는다.
- AUTO : JPA가 데이터베이스의 Dialect에 따라 적절한 전략을 자동으로 선택
💡 Dialect
표준 SQL등이 아닌 특정 데이터베이스에 특화된 고유한 기능
: 테이블에 데이터를 INSERT한 후, 식별자를 얻을 수 있다.
commit()
을 명시적으로 호출하지 않아도 persist()
시 commit이 일어난다.: 테이블에 데이터를 INSERT하기 전에 SEQUENCE로 부터 식별자를 미리 얻을 수 있다.
persist()
시 영속성 컨텍스느에 엔티티가 저장되고 commit()
하기 전까지 테이블에 반영되지 않는다. : Spring Data 패밀리 기술 중 하나로써, JPA 기반의 데이터 액세스 기술을 좀 더 쉽게 사용할 수 있게 해준다.