Skill/JPA
JPA] @Column
진열사랑
2025. 5. 29. 09:16
@Column은 Spring에서 사용하는 것이 아니라 **JPA (Java Persistence API)**에서 사용하는 어노테이션입니다. Spring Data JPA에서 엔티티(Entity) 클래스의 필드를 데이터베이스 테이블의 컬럼과 매핑할 때 사용됩니다.
다음은 @Column의 개념과 주요 속성들에 대한 설명입니다.
🔹 @Column이란?
@Column은 엔티티 클래스의 필드가 데이터베이스 테이블의 **컬럼(Column)**에 매핑된다는 것을 명시하는 JPA 어노테이션입니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name", nullable = false, length = 100)
private String username;
}
위 예시에서 username 필드는 DB의 user_name 컬럼에 매핑됩니다.
🔹 주요 속성들
속성명 설명
name | 매핑할 테이블의 컬럼 이름. 생략하면 필드 이름과 같은 이름의 컬럼으로 매핑됨 |
nullable | null 허용 여부. 기본값은 true |
unique | 유니크 제약조건 설정. 기본값은 false |
length | 문자 길이 설정 (VARCHAR의 길이). 기본값은 255 |
insertable | INSERT SQL에 포함할지 여부. 기본값은 true |
updatable | UPDATE SQL에 포함할지 여부. 기본값은 true |
columnDefinition | DDL 생성 시 사용될 SQL 문법을 직접 지정 (DB 독립성 떨어짐) |
precision | 소수점 포함 전체 자릿수 (숫자형에서 사용) |
scale | 소수점 자리수 (숫자형에서 사용) |
🔹 예시
기본 매핑
@Column
private String email;
email 필드는 자동으로 같은 이름의 DB 컬럼에 매핑됨.
컬럼 이름과 제약조건 지정
@Column(name = "user_email", nullable = false, unique = true, length = 150)
private String email;
user_email이라는 컬럼에 매핑되며, NULL이 허용되지 않고, 유니크하며, 최대 150자.
숫자형 정밀도 설정
@Column(precision = 10, scale = 2)
private BigDecimal salary;
총 10자리 중 소수점 아래 2자리까지 허용됨. 예: 12345678.90
✅ 요약
- @Column은 JPA의 어노테이션으로, 필드와 DB 컬럼의 매핑을 설정함
- 매핑할 컬럼 이름, null 허용 여부, 길이, 제약조건 등을 설정할 수 있음
- 명시하지 않으면 기본적으로 필드 이름과 같은 이름의 컬럼에 매핑됨
필요하면 @Table과 함께 더 구체적인 테이블 설정도 할 수 있습니다.
원하는 속성이나 예시가 있다면 더 구체적으로 알려줄 수 있어요.