ecsimsw

JPA / 필드와 컬럼 매핑 본문

JPA / 필드와 컬럼 매핑

JinHwan Kim 2020. 6. 25. 23:17

"T아카데미 / JPA 프로그래밍 기본기 다지기 - 김영한 " 강좌를 듣고 정리한 글입니다.

필드와 컬럼 매핑

 

데이터 스키마 자동 생산

 

  - DDL을 어플리케이션 실행 시점에서 자동으로 생성하도록 할 수 있다.

 

  - 테이블 중심 -> 객체 중심

 

  - DB에 맞는 적절한 DDL 생성

 

  - 이렇게 자동으로 생성된 DDL은 개발에서만 사용하는 것이 바람직하다. 운영에서 사용해선 안된다.

 

사용 방법

 

  - persistence / property에서 hbm2ddl.auto의 value 조정 

<property name="hibernate.hbm2ddl.auto" value="create"/>

*DML, DDL, DCL

DML : Select, Insert, Update, Delete

DDL : Create, Alter, Drop, Rename

DCL : Grant, Revoke

 

매핑 어노테이션

 

  - 필드와 컬럼을 매핑하는데 사용되는 어노테이션 정리

@Column : name, nullable, insertable 등의 옵션을 컬럼에 적용

@Enumerated : Enum 타입 사용 (EnumType.String 사용을 권장)

@Temporal : 날짜 타입 사용

@Lob : 데이터가 너무 길 때 사용 (String Clob, byte[]는 Blob으로 자동 매핑)

@Transient : DB에 저장하지 않는 필드

  - EnumType : Enumerated의 기본 EnumType은 Ordinal인데, 이는 컬럼이 추가되어 순서가 바뀐다면 컬럼 구분이 뒤섞이므로, EnumType.String으로 한다.

 

사용 예시

@Entity
@Getter @Setter
public class Member {
    @Id
    private Long id;
    @Column(nullable = false, insertable = false, length=20)
    private String name;

    @Enumerated(EnumType.STRING)
    private memberType memberType;

    @Column(name ="AGE_member")
    private Long age;
}
create table Member (
    id bigint not null,
    AGE_member bigint,
    memberType varchar(255),
    name varchar(20) not null,
    primary key (id)
)

 

 

Comments