[SpringBoot JPA 활용 웹 애플리케이션 개발 : Entity Class 개발]

Han Gyul Kang·2022년 4월 10일
0

Inflern_Spring_JPA

목록 보기
2/12
  • @GeneratedValue : Sequence로 사용하기 위한 컬럼
  1. 테이블 명은 관례상 소문자 + 언더스코어 또는 대문자 + 언더스코어 로 결정한다.

  2. OneToMany 또는 ManyToOne 중 Many쪽이 연관관계의 주인이 된다.
    FK가 가까운 쪽의 테이블이 연관관계의 주인이 된다.
    - ManyToMany의 경우 중간에 두 테이블을 맵핑해주는 중간다리 table이 필요하다. 실무에서는 사용을 절대 지양한다.

  • @OneToMany(mappedBy = "String")
    읽기전용이 됨. 여기에 값을 넣는다고 해서 FK값이 변경되지 않음

  1. 상속관계 전략을 지정해야 함
  • abstract class -> extends class
  • 부모테이블에 설정을 잡아 줌 (@Inheritance)
    * @Ingeritance(strategy = InheritanceType.
    JOINED : 가장 정규화된 스타일
    SINGLE_TABLE : 한 테이블에 모두 넣음
    TABLE_PER_CLASS : 특정 테이블만 나오는 전략
    )
  • 부모 테이블의 경우 @DiscriminatorColumn을 잡아주고 자식 테이블의 경우 @DiscriminatorValue를 잡아준다.

  1. Enum 클래스 생성 시
    Enum클래스를 변수로 생성 시 @Enumerated annotation을 선언해야 한다.
    EnumType에는 ORDINAL, STRING 두 가지 타입이 있는데, 보통 STRING 타입을 사용한다.
    ORDINAL 타입으로 생성 시 타입별로 Value가 숫자로 들어가는데, 추후 타입이 추가될 경우 XXX로 입력되는 문제가 있기 때문에 STRING Type을 선택할 것을 권장한다.

  2. Getter와 Setter

  • 실무에서는 조회되는 일이 너무 많기 때문에 Getter의 경우 대부분 열어주는 것이 좋다.
  • Setter의 경우는 데이터가 바뀌는데 사용되기 때문에 잘 선택해서 열어주는 것이 좋다.
    데이터가 변경될 경우 Setter를 너무 많이 열어두면 Entity를 다 찾아봐야하는 경우가 발생할 수도 있다.
    Setter보다는 변경 지점이 명확할 수 있도록 따로 비즈니스 로직을 만드는 것을 권유한다.

  1. 추가
  • 데이터의 정합성보다 실시간 트래픽관리 및 실시간 서비스가 더 중요하다면 FK는 잡지 않고 Index만 잘 잡아줘도 된다.
  • 돈 관련 또는 정합성이 매우 중요하다고 한다면 FK는 잡아주는게 좋다.

profile
피아노 치는 개발자

0개의 댓글

관련 채용 정보