- 어노테이션 명
- 언제 사용해야하는가?
- 코드 예시
@Entitiy, @Column
- @Entity: 데이터베이스의 테이블과 매핑되는 클래스로서, 이 어노테이션이 붙은 클래스는 데이터 베이스에 저장될 수 있는 객체를 의미
- 이 클래스 내에 있는 변수들을
속성
이라고 한다
- @Column: 열의 세부 설정을 위해 해당 어노테이션을 사용
- 아래 코드에서는 studentId 변수에 unique 설정을 적용
@Entity
public class Students {
@Id
private Long id;
@Column(unique=true)
private Long studentId;
private String name;
private LocalDate birthday;
@ManyToOne
private Students students;
}
}
- 생성결과 (h2-conlose)

@Getter, @Setter
- @Getter: Getter 매서드 생성
- @Setter: Setter 매서드 생성
- 일반적으로 엔티티를 만들 때에는 Setter 매서드 사용을 지양, DB를 자유롭게 변경할 수 있는 것이 안전하지 않기 때문
@GeneratedValue
- 데이터베이스에서 기본 키(Primary Key) 값을 자동으로 생성해주기 위해 사용하며 주로 엔티티 클래스의 필드(=변수)에 붙여서 사용
- 다양한 전략(strategy)을 선택하여 사용 가능
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@ManyToOne, @OneToMany
- 두개 모두 부모 자식 관계를 갖는 구조에서 사용
- @ManyToOne --> N:1
- @OneToMany --> 1:N
@Entity
public class Classroom {
@Id
private Long id;
@Column(unique=true)
private Long studentId;
private String name;
@OneToMany (mappedBy = "students")
private List<Students> studentsList;
}
(번외) CascadeType.REMOV
- 게시판 서비스의 경우, 글:댓글 의 관계는 1:N으로, 즉 하나의 글에 여러개의 댓글이 작성될 수 있다. 하지만, 게시판의 경우, 글을 삭제하면 동시에 댓글도 함께 삭제되는데, 이를 구현한 것이라고 생각하면 된다.
@Entity
Class post {
@OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
private List<Answer> answerList;
}