📁 @Column
객체 필드를 테이블 컬럼에 매핑한다.
@Column(name = "name", nullable = false, length = 10)
private String username;
속성
| 속성 | 기능 | 기본값 |
| name | 필드와 매핑할 테이블의 컬럼 이름 | 객체의 필드 이름 |
| nullable(DDL) | null 값의 허용 여부 설정 false 설정 시 DDL 생성 시 not null 제약조건 |
true |
| unique(DDL) | 한 컬럼에 유니크 제약조건 | |
| columnDefinition(DDL) | 데이터베이스 컬럼 정보를 직접 지정 | 필드 타입과 방언 정보로 자동 생성 |
| length(DDL) | 문자 길이 제약조건, String 타입에만 사용 | 255 |
| precision, scale(DDL) | BigDecimal 타입에서 사용 precision: 소수점 포함 전체 자릿수 scale: 소수 자릿수 |
precision=19 scale=2 |
📁 @Enumerated
자바의 enum 타입을 매핑할 때 사용한다.
@Enumerated(EnumType.STRING)
private RoleType roleType;
속성
| 속성 | 기능 | 기본 |
| value | EnumType.ORDINAL: enum 순서를 저장 EnumType.STRING: enum 이름을 저장 |
EnumType.ORDINAL |
주의사항
반드시 EnumType.STRING 사용
- ORDINAL은 enum 순서가 바뀌면 데이터 정합성이 깨짐
- STRING을 사용하면 enum 이름이 DB에 저장되어 안전함
// 사용 금지
@Enumerated(EnumType.ORDINAL)
// 반드시 이렇게 사용 권장
@Enumerated(EnumType.STRING)
📁 @Temporal
날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용한다.
@Temporal(TemporalType.TIMESTAMP)
private Date timestamp;
속성
| 속성 | 기능 | 기본값 |
| value | TemporalType.DATE: 날짜, DB date 타입 TemporalType.TIME: 시간, DB time 타입 TemporalType.TIMESTAMP: 날짜와 시간, DB timestamp 타입 |
필수 지정 |
Java 8 이상
LocalDate, LocalDateTime 사용 시 @Temporal 생략 가능
private LocalDate date; // DATE
private LocalTime time; // TIME
private LocalDateTime dateTime; // TIMESTAMP
📁 @Lob
데이터베이스 BLOB, CLOB 타입과 매핑한다.
@Lob
private String content; // CLOB
@Lob
private byte[] image; // BLOB
매핑 규칙
| 필드 타입 | DB타입 |
| String, char[], java.sql.CLOB | CLOB |
| byte[], java.sql.BLOB | BLOB |
📁 @Transient
필드를 데이터베이스에 매핑하지 않는다.
@Transient
private Integer temp; // DB 저장/조회 안 됨
용도: 임시 데이터 보관용
📁 @Access
JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
@Access(AccessType.FIELD) // 필드 직접 접근
@Access(AccessType.PROPERTY) // getter 사용
접근 타입
| 타입 | 설명 |
| AccessType.FIELD | 필드에 직접 접근 (private도 가능) |
| AccessType.PROPERTY | getter를 사용해서 접근 |
기본값
@Id의 위치로 자동 결정
- 필드에
@Id→ FIELD 접근 - getter에
@Id→ PROPERTY 접근
📁 정리
| 어노테이션 | 용도 | 핵심 속성 | 주의사항 |
| @Column | 컬럼 매핑 | name, nullable, length | nullable, length 설정 권장 |
| @Enumerated | Enum 매핑 | value | 반드시 STRING 사용 |
| @Temporal | 날짜 매핑 | value | Java 8은 생략 가능 |
| @Lob | 대용량 데이터 | 없음 | 타입에 따라 CLOB/BLOB 자동 |
| @Transient | 매핑 제외 | 없음 | 임시 데이터용 |
| @Access | 접근 방 | value | @Id 위치로 자동 결정 |
'JPA' 카테고리의 다른 글
| 6장. 다양한 연관관계 매핑 (0) | 2025.12.04 |
|---|---|
| 5장. 연관관계 매핑 기초 (0) | 2025.12.02 |
| 4-1장. 엔티티 매핑 (0) | 2025.11.28 |
| 3장. 영속성 관리 (0) | 2025.11.24 |
| 2장. JPA 시작 (0) | 2025.11.24 |