[스프링부트] Entity

Kwon·2023년 11월 21일

스프링부트

목록 보기
2/12
post-thumbnail

Entity

Entity?

  • 데이터베이스 테이블과 매핑되는 자바 클래스를 말함
  • 데이터베이스처럼 속성들 구성 가능하다.

Example

@Entity

  • 테이블과 링크될 클래스

@Id

  • id 속성을 기본 키로 지정하는 어노테이션
  • id를 데이터베이스에 저장할 때 동일한 값으로 저장할 수 없음 (메인 키는 유일성 존재)

@GeneratedValue

  • 데이터를 저장할 때 마다 자동으로 1씩 증가 (DB에서 AUTO_INCREMENT와 동일한 의미)
  • 괄호 내 strategy는 고유번호를 생성
  • GenerationType.IDENTITY는 해당 컬럼만의 독립적인 시퀀스를 생성하여 번호를 증가시킬 때 사용

@Column

  • 컬럼의 세부설정을 위해 사용하는 어노테이션
  • length는 컬럼의 길이를 설정할 때 사용
  • columnDefinition = “TEXT”는 내용처럼 글자 수를 제한할 수 없는 경우에 사용
  • 엔티티 속성은 어노테이션 사용하지 않더라도 테이블 컬럼으로 인식하는데, 열 기준으로 인식하고 싶지 않은 경우엔 @Transient 를 사용하면 됨

@OneToMany & @ManyToOne

  • 각각의 엔티티간 관계를 표현하는 어노테이션
  • 질문 게시판을 예로 들면 한 질문엔 여러 답변이 달릴 수 있기에 참조 어노테이션 생성 (@ManyToOne)
  • 반면, 답변자들 입장에선 다수의 답변자가 하나의 질문에 답변을 하니 @OneToMany 사용
  • mappedBy는 참조 엔티티의 속성명을 의미
  • Answer 엔티티에서 Question 엔티티를 참조한 속성명을 question을 mappedBy에 전달
  • CascadeType.REMOVE를 사용함으로써 질문 삭제 시 답변들 연쇄 삭제 가능

교육 참조 : 링크텍스트

profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글