[JPA] @Entity의 기본속성

jpa, spring

class annotation으로 @Entity를 추가하면, 메소드에 @Id annotation을 추가할 수 있으며, 이는 PK를 지정한다.

@GeneratedValue #

GenerationType #


@Table #

@Table(name = "user", indexes = {@Index(columnList = "name")}, uniqueConstraints = {@UniqueConstraint(columnNames = {"email"})})
public class User {
    ...
}

@Column #

필드의 annotation.

@Column(name = "createdAt", nullable = false)
private LocalDateTime createAt;

@Transient #

@Transient
private String testData;

필드 annotation이며, DB 데이터에 반영되지않고 해당 데이터와 생명주기가 같아짐.


@Enumerated #

public enum Gender {
    MALE,
    FEMALE
}

// repository
@Enumerated(value = EnumType.STRING)
private Gender gender;

enum 타입으로 Gender type을 하나 만들고, repository에 추가했을 때, @Enumerated(value = EnumType.STRING) 을 붙이지 않으면 0 과 1 등으로 추가되기때문에 예상치 못한 결과값이 나올 수 있다. 그러므로 enum을 사용할땐 enumerated를 활용.