JPA를 사용하는 데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것입니다.
매핑하는 방법은 XML이나 어노테이션 중에 선택할 수 있다.
1. @Entity
JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 사용해야 한다.
주의사항
- 기본 생성자는 필수이다.
- final 클래스, enum, interface, inner 클래스에는 사용할 수 없다.
- 저장할 필드에 final을 사용하면 안된다.
2. @Table
@Table은 엔티티와 매핑할 테이블을 지정한다.
3. 데이터베이스 스키마 자동 생성
JPA 2. 1부 터지 원
JPA는 데이터베이스 스키마를 자동으로 생성하는 기능이 존재한다. 클래스의 매핑 어노테이션 정보와 데이터베이스 방언을 이용해 데이터베이스 스키마를 생성한다.
하지만 자동 생성 기능이 만든 DDL은 완벽하지 않을 수 있으므로 참고하는 정도로만 사용하는 것이 좋다.
4. 기본 키 매핑
식별자 필드를 애플리케이션에서 생성해서 직접 할당해주는 방식과
데이터베이 시에가 자동 생성해주는 (MySQL의 AUTO_INCREMENT기능)인 자동 생성 방식이 있다.
자동 생성
- IDENTITY : 기본 키 생성을 데이터베이스에 위임한다.
IDENTITY 전략은 데이터베이스에서 INSERT 한 후에 기본 키값을 조회할 수 있다. 따라서 저장 즉시 INSERT SQL문이 데이터베이스에 전달되므로 트랜잭션을 지원하는 쓰기 지연이 동작할 수 없다.
- SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당한다.
@SequenceGenerator(
name : "jpa 관리 시퀀스이름",
sequenceName = "데이터베이스 시퀀스 이름",
initialValue = 1, allocationSize = 1)
)
@Id
@GeneratedValue(strategy = GenerationType.SEQUECNE, generator ="jpa 관리 시퀀스이름")
private Long id;
1) 시퀀스(Sequence)란?
- - 유일(UNIQUE)한 값을 생성해주는 데이터베이스 객체이다.
- - 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 칼럼을 자동적으로 생성할 수 있다.
- - 보통 PRIMARY KEY 값을 생성하기 위해 사용한다.
- - 메모리에 Cache 되었을 때 SEQUENCE 값의 액세스 효율이 증가한다.
- - SEQUENCE는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 SEQUENCE를 여러 테이블에서 쓸 수 있다.
- TABLE : 키 생성 테이블을 사용한다
자동 생성 전략을 사용하기 위해선 @Id에 @GeneratedValue를 추가하고 원하는 키 생성 전략을 선택해야 한다.
옵션 = hibernate.id.new_generator_mappings=true 속성 추가해야 최적화 전략을 사용할 수 있다.
그 외 AUTO 전략이 있다.
'데이터 접근 기술 > JPA' 카테고리의 다른 글
[JPA] JPQL 소개 (0) | 2021.01.30 |
---|---|
[JPA] 즉시 로딩과 지연 로딩 (0) | 2021.01.28 |
[JPA] 상속 관계 매핑 (0) | 2021.01.27 |
JPA 영속성 (0) | 2020.09.02 |
JPA 소개 (0) | 2020.09.01 |
댓글