JPA

JPA 사용되는 어노테이션 모음 @Entity, @Id, @Table, @Column - name - nullable - unique - length , @Enumerated - STRING, @Temporal, LocalDate, LocalDateTime, @Lob, jpa의 BigDecimal 만드는법, @Transient 등

✨✨✨✨✨✨✨ 2023. 5. 21. 22:17
반응형

@Entity

  • 내용: 해당 클래스가 엔티티임을 나타내는 어노테이션입니다.
  • 설명: JPA가 해당 클래스를 데이터베이스 테이블과 매핑합니다.
  • 예제:
    @Entity
    @Table(name = "users")
    public class User {
      //...
    }

 

@Id

  • 내용: 해당 필드가 엔티티의 식별자(primary key)임을 나타내는 어노테이션입니다.
  • 설명: 엔티티의 식별자 필드를 지정할 때 사용합니다.
  • 예제:
    @Id
    private Long id;

 

@Table

  • 내용: 엔티티와 매핑될 테이블의 이름을 지정하는 어노테이션입니다.
  • 설명: 엔티티를 매핑할 테이블의 이름을 지정합니다.
  • 예제:
    @Entity
    @Table(name = "users")
    public class User {
      //...
    }

 

@Column

  • 내용: 엔티티의 필드를 데이터베이스 테이블의 컬럼과 매핑하기 위해 사용하는 어노테이션입니다.
  • 설명: 필드와 컬럼 사이의 매핑 정보를 지정합니다.
  • 예제:
    @Column(name = "first_name", nullable = false, unique = true, length = 50)
    private String firstName;

 

@Enumerated

  • 내용: Enum 타입 필드를 매핑할 때 사용되는 어노테이션입니다.
  • 설명: Enum 값을 어떤 형태로 데이터베이스에 저장할지를 지정합니다. 여기서는 STRING을 예로 들겠습니다.
  • 예제:
    @Enumerated(EnumType.STRING)
    @Column(name = "gender")
    private Gender gender;

 

@Temporal

  • 내용: 날짜와 시간 타입 필드를 매핑할 때 사용되는 어노테이션입니다.
  • 설명: 날짜와 시간 타입의 필드를 어떤 형태로 데이터베이스에 저장할지를 지정합니다. DATE, TIME, TIMESTAMP 중 하나를 선택하여 사용할 수 있습니다.
  • 예제:
    @Temporal(TemporalType.DATE)
    @Column(name = "birth_date")
    private Date birthDate;

 

LocalDate, LocalDateTime

  • 내용: JPA 2.2부터 지원되는 자바 8 이상의 날짜와 시간 타입입니다.
  • 설명: 날짜 또는 날짜와 시간을 저장하는 필드에 사용됩니다.
  • 예제:
    @Column(name = "created_at")
    private LocalDateTime createdAt;
    

 

@Column(name = "birth_date")
private LocalDate birthDate;


**@Lob**

- 내용: 큰 크기의 데이터를 매핑하기 위해 사용되는 어노테이션입니다.
- 설명: 일반적으로 CLOB(Character Large Object)나 BLOB(Binary Large Object) 타입 필드와 매핑됩니다.
- 예제:
```java
@Lob
@Column(name = "description")
private String description;

 

BigDecimal

  • 내용: JPA에서 BigDecimal 타입 필드를 매핑하기 위해서는 @Column(precision = X, scale = Y)와 같이 precisionscale을 지정해야 합니다. precision은 전체 자릿수를, scale은 소수점 이하 자릿수를 나타냅니다.
  • 설명: 큰 정밀도와 소수점을 필요로 하는 금액이나 숫자와 같은 필드에 사용됩니다.
  • 예제:
    @Column(name = "price", precision = 10, scale = 2)
    private BigDecimal price;

 

@Transient

  • 내용: 해당 필드를 데이터베이스에 매핑하지 않고 무시하도록 지정하는 어노테이션입니다.
  • 설명: 엔티티에 속하지만 데이터베이스에 저장할 필요가 없는 임시 필드에 사용됩니다.
  • 예제:
    @Transient
    private String transientField;

 

위의 내용은 JPA에서 사용되는 주요 어노테이션들과 해당 어노테이션의 내용, 설명, 예제를 포함하고 있습니다. 실제 사용 시에는 이러한 어노테이션들을 적절히 활용하여 엔티티 클래스를 구성하시면 됩니다.

 

아래는 간단하게 표로 정리한 내용입니다.

반응형