@Entity
@Getter
@Setter
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 200)
private String subject;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
@OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
private List<Answer> answerList;
}
@Entity의 설정으로 나는 Question이라는 테이블을 생성하겠다는 명시를 했음
처음에 혼동을 했지만, 내가 Question클래스를 만들었다고 DB 테이블이 생성되는 건 아니었다
참고로 생성시에는
속성이 createDate 라면 테이블에서는 create_date로 생성된다고 한다. 네이밍 규칙!
테이블 생성 설정
앱의 설정파일경로에 적용할 것
spring.jpa.hibernate.ddl-auto 설정을 적용해야 함
EX) spring.jpa.hibernate.ddl-auto=create
여러 속성으로는 none, create, create-drop, update, validate 등이 있음
@Entity
//////
@Id
@GeneratedValue
사용 시에는 strategy = GenerationType.IDENTITY와 같이 명시를 해줘야 명확하다
@Column
ex) nullable = false, name = "user_name", length = 100, unique = true
columnDefinition = "TEXT"
여러가지 속성들은 쓰면서 알아볼 것..
@OneToMany
Question클래스
ex)
@OneToMany(mappedBy = "question")
private List<Answer> answerList;
//@OneToMany는 관계구조를 표현해주는 코드일 뿐이고 값이 생성되는 건 아님
여기에서 관계구도는
>> Answer에서 참조되어지고 있고 주인관계가 Answer클래스의 question
@ManyToOne
Answer클래스
ex)
@ManyToOne
@JoinColumn(name = "question_id") //@JoinColumn생략가능함
private Question question;
Question question; 은 외래키가 되는 셈인데 객체로 생성해야한다.
그래야 제대로 생성이 된다. 객제지향관계임.