본문 바로가기

스터디/JPA

엔티티 매핑 - (2)

728x90
반응형

필드와 컬럼 매핑


@Column

객체 필드를 테이블 컬럼에 매핑한다

 

속성

  - name: 필드와 매핑할 테이블의 컬럼 이름. 기본값은 객체의 필드 이름

  - nullable: null 값의 허용 여부를 설정한다 (DDL)

  - unique: 특정 컬럼에 유니크 제약조건을 설정한다 (DDL)

  - length: 문자 길이 제약 조건. String 타입에만 사용한다 (DDL)

  - precision, scale: BigDecimal, BigInteger에서 사용한다. 전체 자릿수와 소수 자릿수를 설정한다 (DDL)

@Enumerated

자바의 enum을 사용하기 위해서는 @Enumerated 어노테이션으로 매핑해야 한다

 

속성

  - value:

    - EnumType.ORDINAL

       enum에 정의된 순서대로 index 값이 데이터베이스에 저장된다

       데이터의 크기를 줄일 수 있지만 이미 저장된 enum의 순서를 변경할 수 없다

    - EnumType.STRING:

       enum 이름 그대로 문자로 데이터베이스에 저장된다

       데이터의 크기가 비교적 크지만 enum의 순서가 바뀌거나 추가되어도 안전하다

@Temporal

날짜 타입을 매핑할 때 사용한다

 

속성

  - value:

    - TemporalType.DATE: 날짜, 데이터베이스 date 타입과 매핑 (2013-10-11)

    - TemporalType.TIME: 시간, 데이터베이스 time 타입과 매핑 (11:11:11)

    - TemporalType.TIMESTAMP: 날짜와 시간, 데이터베이스 timestamp 타입과 매핑 (2013-10-11 11:11:11)

@Lob

데이터베이스 BLOB, CLOB 타입과 매핑한다

매핑하는 필드 타입이 문자이면 CLOB으로 나머지는 BLOB으로 매핑한다

@Transient

해당 필드는 매핑하지 않는다

즉, 데이터베이스에 저장하지 않고 조회하지 않는다

@Access

JPA 엔티티가 데이터에 접근하는 방식을 지정한다

 

필드 접근

  - AccessType.FIELD로 지정된다

  - 필드에 직접 접근하고 private이어도 접근할 수 있다

 

프로퍼티 접근

  - AccessType.PROPERTY로 지정한다

  - 접근자(Getter)를 사용한다

 

@Entity
@Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint(
        name = "NAME_AGE_UNIQUE",
        columnNames = {"NAME", "AGE"} )})
public class Member {

    @Id
    @Column(name = "ID")
    private String id;

		@Column(name = "NAME", nullable = false, length = 10)
    private String username;

    private Integer age;

    @Enumerated(EnumType.STRING)
    private RoleType roleType;

    @Temporal(TemporalType.TIMESTAMP)
    private Date createdDate;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModifiedDate;

    @Lob
    private String description;

	...
    
}
728x90
반응형

'스터디 > JPA' 카테고리의 다른 글

연관관계 매핑 기초 - (2)  (0) 2025.02.09
연관관계 매핑 기초 - (1)  (0) 2025.02.09
엔티티 매핑 - (1)  (0) 2025.02.08
영속성 관리 - (2)  (0) 2025.02.07
영속성 관리 - (1)  (0) 2025.02.07