[Spring Data JPA] annotation(어노테이션)

2019. 9. 29. 19:57SPRING/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