본문 바로가기
데이터 접근 기술/JPA

Entity 매핑

by oncerun 2020. 9. 3.
반응형

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

댓글