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과 함께 더 구체적인 테이블 설정도 할 수 있습니다.


원하는 속성이나 예시가 있다면 더 구체적으로 알려줄 수 있어요.