Entity 클래스 생성

김효중·2025년 7월 27일
@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; 은 외래키가 되는 셈인데 객체로 생성해야한다.
	그래야 제대로 생성이 된다. 객제지향관계임.
profile
안녕하세요

0개의 댓글