@Column
🏷 @Column
정의
@Column은 JPA에서 엔티티 필드와 데이터베이스 테이블 컬럼의 매핑을 정의하는 애너테이션이다.
필드명과 컬럼명이 다를 수 있기 때문에, 실제 저장될 컬럼의 속성을 명시적으로 관리할 때 자주 사용한다.
🧩 역할
- 필드와 컬럼의 매핑을 정의한다.
- 컬럼 이름과 제약 조건을 지정한다.
- 길이, null 여부, 유일성, 업데이트 가능 여부 등을 설정한다.
⚙️ 주요 속성
| 속성 | 기능 |
|---|---|
name |
컬럼명을 설정한다. |
length |
문자열 최대 길이를 설정한다. |
nullable |
NULL 허용 여부를 설정한다. |
precision |
숫자 타입의 전체 자릿수를 지정한다. |
scale |
숫자 타입의 소수 자릿수를 지정한다. |
columnDefinition |
컬럼 타입을 직접 지정한다. |
unique |
컬럼 값의 유일성을 지정한다. |
insertable |
INSERT 쿼리에 포함할지 여부를 지정한다. |
updatable |
UPDATE 쿼리에 포함할지 여부를 지정한다. |
🧪 사용 예시
// Float 타입의 최대 길이와 소수부 자리수를 지정
@Column(name = "AVG_CPU_USE_RATE", precision = 5, scale = 2)
private Float averageCpuUseRate;
// max 길이만 설정
@Column(name = "TASK_ORD_DT", length = 6, nullable = false)
private DateTime orderDateTime;
// Lob 타입 지정
@Lob
@Column(name = "QUE_DATA", columnDefinition = "CLOB")
private String queueData;
✅ 사용 시 주의점
ddl-auto=create|update환경에서는 일부 제약 조건이 자동 반영될 수 있다.- 하지만
nullable,length같은 값은 명시적으로 적어 두는 편이 더 안전하다. - 컬럼명과 필드명을 다르게 쓸 때 특히 유용하다.
📌 정리
@Column은 엔티티 필드와 DB 컬럼을 매핑하는 애너테이션이다.- 컬럼명과 제약 조건을 명확히 표현할 수 있다.
- 실무에서는 기본값보다 명시적으로 속성을 적는 편이 안전하다.
댓글남기기