@Entity 어노테이션은 클래스가 JPA 엔티티임을 명시합니다. 이 어노테이션이 선언된 클래스는 데이터베이스 테이블에 매핑됩니다.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// getters and setters
}
@Table 어노테이션은 엔티티 클래스가 매핑될 테이블의 이름을 지정합니다. 생략할 경우 클래스 이름이 테이블 이름으로 사용됩니다.
@Entity
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// getters and setters
}
@Id 어노테이션은 엔티티의 기본 키를 지정합니다.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// getters and setters
}
@GeneratedValue 어노테이션은 기본 키 값의 자동 생성을 지정합니다. strategy 속성을 통해 다양한 생성 전략을 설정할 수 있습니다. 주요 전략은 다음과 같습니다:
GenerationType.AUTO: JPA 구현체가 자동으로 선택합니다.
GenerationType.IDENTITY: 데이터베이스의 IDENTITY 컬럼을 사용합니다.
GenerationType.SEQUENCE: 데이터베이스의 시퀀스를 사용합니다.
GenerationType.TABLE: 키 생성용 별도 테이블을 사용합니다.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// getters and setters
}
@Column 어노테이션은 엔티티 필드를 데이터베이스 컬럼에 매핑하는 데 사용됩니다. 다양한 속성을 통해 컬럼의 세부 설정을 지정할 수 있습니다.
name: 컬럼 이름
nullable: NULL 가능 여부
unique: 유니크 제약 조건 설정
length: 문자열 컬럼의 길이
precision, scale: 숫자 컬럼의 정밀도와 스케일
@Column
@Column 어노테이션은 엔티티 필드를 데이터베이스 컬럼에 매핑하는 데 사용됩니다. 다양한 속성을 통해 컬럼의 세부 설정을 지정할 수 있습니다.
name: 컬럼 이름
nullable: NULL 가능 여부
unique: 유니크 제약 조건 설정
length: 문자열 컬럼의 길이
precision, scale: 숫자 컬럼의 정밀도와 스케일
@Temporal 어노테이션은 날짜/시간 타입을 매핑할 때 사용됩니다. TemporalType 속성을 통해 날짜, 시간 또는 타임스탬프를 지정할 수 있습니다.
TemporalType.DATE: 날짜 정보만
TemporalType.TIME: 시간 정보만
TemporalType.TIMESTAMP: 날짜와 시간 정보
@Temporal
@Temporal 어노테이션은 날짜/시간 타입을 매핑할 때 사용됩니다. TemporalType 속성을 통해 날짜, 시간 또는 타임스탬프를 지정할 수 있습니다.
TemporalType.DATE: 날짜 정보만
TemporalType.TIME: 시간 정보만
TemporalType.TIMESTAMP: 날짜와 시간 정보
@Enumerated 어노테이션은 enum 타입을 매핑할 때 사용됩니다. EnumType 속성을 통해 ORDINAL (숫자 값) 또는 STRING (문자열 값)로 매핑할 수 있습니다.
@Enumerated
@Enumerated 어노테이션은 enum 타입을 매핑할 때 사용됩니다. EnumType 속성을 통해 ORDINAL (숫자 값) 또는 STRING (문자열 값)로 매핑할 수 있습니다.
@Lob 어노테이션은 큰 데이터 객체(BLOB, CLOB)를 매핑할 때 사용됩니다. BLOB (Binary Large Object)는 바이너리 데이터를, CLOB (Character Large Object)는 문자열 데이터를 저장합니다.
@Entity
public class Document {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob
private byte[] content;
// getters and setters
}
@Transient 어노테이션은 특정 필드가 데이터베이스 컬럼에 매핑되지 않도록 합니다. 해당 필드는 JPA가 관리하지 않습니다.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@Transient
private String temporaryData;
// getters and setters
}