Programming/JPA

[Spring Data JPA] JPA 주요 어노테이션(Annotation)

빈쿵바라기 2022. 7. 31. 22:54

 

JPA에는 어노테이션을 통해 여러가지 설정을 할 수 있다.

어떤 어노테이션들이 있는지 정리해보자.

Entity 관련

@Entity
@Table(name = "member")
public class Member {

    @Id
    @GeneratedValue(startegy=GenerationType.IDENTITY)
    private Integer id;
    
    @Column(name="member_name")
    private String memberName;
    
    @Enumerated(value=EnumType.STRING)
    private RoleType role;
    
    @Column(name="created_time")
    @Temporal(value=TemporalType.TIMESTAMP)
    private LocalDateTime createdTime
    
    @Transient
    private String tempStr;
}

//Enum 클래스
public enum RoleType {
    ADMIN, USER
}
  • @Entity
    • 데이터베이스의 테이블과 일대일로 매칭이 됨.
  • @Table(name="table_name")
    • table_name에 해당되는 테이블과 매핑됨.
    • 옵션
      • name : 매핑할 테이블의 이름을 지정
      • catelog : DB의 catelog를 매핑
      • schema : DB 스키마와 매핑
      • uniqueConstraint : DDL쿼리를 작성할 때 제약조건을 생성
  • @Column(name="column_name")
    • column_name에 해당되는 컬럼과 매핑이 되며, 지정하지 않는다면 멤버변수의 이름과 같은 Column과 매핑이 됨
    • 그외 옵션
      • inserttable : entity 저장시 선언된 필드도 같이 저장 (default=true)
      • updateable : entity 수정시 선언된 필드도 같이 수정 (default=true)
      • nullable : NULL 허용 여부 설정 (default=false)
      • unique : 제약조건 설정 (default=false)
      • table : 지정한 필드를 다른 테이블에 매핑
      • length : varchar의 길이를 조정. (defalut=255)
  • @Id
    • 객체를 식별하는 유일값으로 지정함. 해당 어노테이션이 붙은 멤버변수는 해당 테이블의 Primary Key가 됨
  • @GeneratedValue(stargety="IDENTITY")
    • Entity가 저장될 때 기본키를 자동으로 생성하는 전략을 결정함.
    • 옵션
      • AUTO(default) : JPA 구현체가 자동으로 생성 전략을 선택
      • IDENTITY : 기본키 생성을 데이터베이스에 위임
      • SEQUENCE: 데이터베이스의 특별한 오브젝트 시퀀스를 사용하여 기본키를 생성
      • TABLE_: 데이터베이스에 키 생성 전용 테이블을 만들어 이를 이용해 기본키를 생성
  • @Enumerated
    • 자바 enum타입과 매핑할 때 사용
    • 옵션
      • EnumType.ORDINAL : enum의 순서를 저장
      • EnumType.STRING : enum의 이름을 저장
  • @Temporal
    • 날짜 타입을 매핑할 때 사용
    • 옵션
      • TemporalType.DATE
      • TemporalType.TIME
      • TemporalType.TIMESTAMP
  • @Transient
    • 객체에 임시로 값을 보관하고자 할 때 사용
    • 지정된 필드는 DB에 저장하거나 조회하지 않음.

 

Join 관련

  • 두 엔티티간의 관계를 나타내는 어노테이션
    • @OneToMany : 일대다(1:N)
    • @OneToOne : 일대일(1:1)
    • @ManyToMany : 다대다(N:N)
    • @ManyToOne : 다대일(N:1)
  • @JoinColumn(name="columnName")
    • 외래 키를 매핑할 때 사용하며, name속성에는 매핑할 외래키 이름을 지정.

 

JPA Join에 대한 상세 내용은 다음 포스팅에서 자세하게 다뤄보자.