SPRING&BOOT/JPA

JPA 엔티티 어노테이션 가이드: 핵심 어노테이션과 예제 코드 정리

jki09871 2024. 8. 22. 13:39
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
}