JPA(Java Persistence API)를 사용할 때 엔티티와 관련된 다양한 어노테이션들이 사용된다. 이 어노테이션들은 데이터베이스와의 매핑을 정의하고, 효율적인 데이터 관리를 가능하게 만들어 준다. 본 글에서는 JPA 엔티티에서 자주 사용되는 주요 어노테이션들을 설명하고, 각 어노테이션의 예시 코드와 함께 주요 속성들을 정리해봤다. 이를 통해 JPA 엔티티 설계 시 어노테이션을 더욱 효과적으로 사용할 수 있게 될 것이다.
1. @Entity
import javax.persistence.*;
// 이 클래스는 JPA에서 관리하는 엔티티임을 나타냅니다.
// 해당 클래스는 데이터베이스의 테이블과 매핑됩니다.
@Entity
public class User {
// 이 필드는 엔티티의 기본 키로 사용됩니다.
@Id
// 기본 키 값이 자동으로 생성되도록 설정합니다. GenerationType.IDENTITY 전략을 사용합니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 필드를 username 컬럼과 매핑하며, null 값을 허용하지 않도록 설정합니다.
@Column(name = "username", nullable = false)
private String username;
// getters and setters
}
2. @Table
import javax.persistence.*;
// 이 엔티티는 users 테이블과 매핑됩니다.
@Entity
@Table(name = "users") // 테이블 이름을 users로 지정합니다.
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// username 컬럼으로 매핑되며, null 값을 허용하지 않습니다.
@Column(name = "username", nullable = false)
private String username;
// getters and setters
}
3. @Id
import javax.persistence.*;
// 이 클래스는 JPA 엔티티로 데이터베이스 테이블과 매핑됩니다.
@Entity
public class User {
// 이 필드는 엔티티의 기본 키로 사용됩니다.
@Id
// 기본 키 생성을 위한 전략을 설정합니다. GenerationType.IDENTITY 전략을 사용하여 자동으로 값이 생성됩니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false)
private String username;
// getters and setters
}
4. @GeneratedValue
import javax.persistence.*;
// 이 클래스는 JPA 엔티티로 데이터베이스 테이블과 매핑됩니다.
@Entity
public class User {
// 이 필드는 엔티티의 기본 키로 사용됩니다.
@Id
// 기본 키 생성을 위한 전략을 설정합니다. GenerationType.IDENTITY 전략을 사용하여 자동으로 값이 생성됩니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false)
private String username;
// getters and setters
}
5. @Column
import javax.persistence.*;
// 이 클래스는 JPA 엔티티로 데이터베이스 테이블과 매핑됩니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// username 컬럼에 매핑되며, 길이는 50으로 제한되고 null 값을 허용하지 않습니다.
@Column(name = "username", nullable = false, length = 50)
private String username;
// getters and setters
}
6. @Temporal
import javax.persistence.*;
import java.util.Date;
// 이 클래스는 JPA 엔티티로 데이터베이스 테이블과 매핑됩니다.
@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 날짜만 저장되도록 설정합니다. (YYYY-MM-DD 형식)
@Temporal(TemporalType.DATE)
private Date eventDate;
// getters and setters
}
7. @Enumerated
import javax.persistence.*;
// 이 클래스는 JPA 엔티티로 데이터베이스 테이블과 매핑됩니다.
@Entity
public class User {
// enum 타입 필드를 정의합니다.
public enum Role {
ADMIN, USER
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// enum의 이름을 데이터베이스에 저장합니다. (예: "ADMIN", "USER")
@Enumerated(EnumType.STRING)
private Role role;
// getters and setters
}