[Spring Data JPA] annotation(어노테이션)
2019. 9. 29. 19:57ㆍSPRING/Spring Data JPA
@Entity(name = 기본은 클래스명)
테이블과 매핑되는 객체라는 선언.
name 생략하고 @Entity 만 쓸 경우 기본은 클래스명과 동일
@Table(name = 기본은 Entity명)
엔티티와 매핑될 테이블의 이름을 설정할 수 있음.
name 생략하고 @Table 만 쓸 경우 기본은 Entity명과 동일
@Id
기본키 (primary key)
@GeneratedValue
값이 자동으로 생성되도록 함. (시퀀스나 auto increment 사용하듯이)
@Temporal(TemporalType.TIMESTAMP)
Date타입의 설정.
TemporalType.TIMESTAMP, TemporalType.TIME 등으로 설정 가능
@Transient
DB에 매핑하지 않고, 컬럼으로 등록하지도 않는다. Java 코드에만 존재하도록 한다.
* 아래 연관관계 매핑에 대한 상세 정리는 2019/09/29 - [JPA] - JPA 연관관계 매핑 에 따로 정리함
@ManyToOne
단방향. 해당 value가 FK인 경우이다.
@Entity
public class Student {
@ManyToOne
private School school;
// School이라는 Entity의 id값이 FK로 들어온다.
// 컬럼은 school_id 으로 생성된다.
}
@OneToMany
단방향. 조인 테이블이 하나 같이 생성된다.
@Entity
public class School {
@OneToMany
private Set<Student> students = new HashSet<>();
// school_students 라는 조인테이블이 하나 생성된다.
// 컬럼은 school_id 와 student_id 두가지가 생성된다.
}
@OneToMany(mappedBy = "school", cascade = CascadeType.ALL)
양방향 어노테이션
@Entity
public class Student {
@ManyToOne
private School school;
// School이라는 Entity의 id값이 FK로 들어온다.
// 컬럼은 school_id 으로 생성된다.
}
@Entity
public class School {
@OneToMany(mappedBy = "school")
private Set<Student> students = new HashSet<>();
// 실제 DB상에 저장되지는 않고, 객체상으로만 존재
}
'SPRING > Spring Data JPA' 카테고리의 다른 글
[Spring Data JPA] 프로젝트 세팅 (0) | 2020.05.05 |
---|---|
[Spring Data JPA] Repository 생성 (0) | 2019.10.08 |
[Spring Data JPA] Cascade (0) | 2019.10.05 |