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에 대한 상세 내용은 다음 포스팅에서 자세하게 다뤄보자.
'Programming > JPA' 카테고리의 다른 글
[Spring Data JPA] Query를 사용하는 여러가지 방법 (0) | 2022.08.11 |
---|---|
[Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY) (0) | 2022.08.04 |
[Spring Data JPA] 양방향 순환참조 문제 및 해결방법 (0) | 2022.08.03 |
[Spring Data JPA] JPA 연관관계 매핑(JOIN) (0) | 2022.08.02 |
[Spring Data JPA] JPA란? JPA기본 예제 (0) | 2022.07.25 |