JPA에서는 Entity의 속성과 테이블의 컬럼의 매핑을 위해
다양한 옵션(애너테이션)을 지원하고 있다
JPA에서 지원하는 옵션은 다음과 같다
이번 페이지에서는 컬럼에 대한 옵션을 살펴보겠다
@Column
- name - 컬럼이름
- insertable/updatable - 등록/수정 가능 여부
- unique - unique 제약조건
- columnDefinition - 컬럼에 대한 DDL을 직접 주는 옵션 ex) varchar(100) default ‘EMPTY'
- length - 문자열 길이
- precision - 소수점을 포함한 전체 자릿 수
- scale - 소수 자리수
위 옵션들은 아래와 같이 Entity의 속성위에 @Column 애너테이션을 붙여서 설정할 수 있다
@Entity
class Report{
@Id
private Long Id
@Column(name="TTL", unique="false", length= 50)
private String title;
@Column(update="false", length= 50)
private String report;
}
다만, 컬럼에 제약조건을 설정하는 unique옵션의 경우,
제약조건이름이 "UK_kjngvkajnsdfkljasldkj123124"와 같이 지정되어
디버깅이나 유지보수에 어려움이 있을 수 있다
그래서 컬럼에 unique 제약조건을 설정하기 보다는
아래와 같이 테이블에 제약조건을 설정하면 제약조건이름을 지정할 수 있으므로
@Table 애너테이션의 uniqueContstraints옵션을 이용하여 테이블에 제약조건을 지정해주는 게 좋다
@Entity
@Table(
uniqueConstraints={
@UniqueConstraint(
name = "report_reported_date_unique",
columnNames = {"reported_date"}
)
}
)
class Report{
@Id
private Long Id
@Column(name="TTL", unique="false", length= 50)
private String title;
@Column(update="false", length= 50)
private String report;
private LocalDateTime reportedDate;
}
'Spring > JPA' 카테고리의 다른 글
Entity-Table 매핑 - 필드 매핑(@Temporal) (0) | 2023.02.23 |
---|---|
Entity-Table 매핑 - 필드 매핑(@Enumerated) (0) | 2023.02.23 |
스키마 자동생성 옵션 (0) | 2023.02.14 |
Entity-Table 매핑 - Entity와 테이블 매핑방법 (0) | 2023.02.12 |
영속성 컨텍스트 이점 (0) | 2023.02.12 |
댓글