🍀

도메인 생성, Entity vs Vo, int vs Integer

작성일자
May 9, 2023
태그
DIARY_DEVELOP
프로젝트
NOI
책 종류

도메인 생성 (DDD 도전,,?)

(1) 기획 측 요구 사항

  • 회원가입시 기본 유형을 선수로 하고, 회원 업그레이드시 코치 유형으로 업그레이드
    • 일단 회원가입시 role을 선수(디폴트)로 설정
  • 일단 회원가입시 무조건 선수로 가입하게하고, 코치도 선수와 동일하게 테이블생성
    • player테이블의 코치 데이터는 선수의 중위값을 나타낼때 쓰면 좋겠음.
    • Statistics 테이블 별개로
⇒ 내가 궁금한 점(회의 때 여쭤보자)
  • 선수 중위값은 team의 training statistics에 현재 저장하고 있는데, 이것 외에 추가적으로 저장해야 할 게 있는가. 예를 들면 평균 같은?
  • 코치도 동일하게 player 테이블을 생성하면 member랑 player 테이블 나눌 필요가 없어지지 않는가. 그냥 member랑 player테이블 합칠 것인가?

(2) 생성 과정 (base entity부터 연관관계 method까지)

  1. base entity 만들기 → 모든 도메인들에 넣어줄 공통 필드 추출
    1. 각 도메인 클래스들 만들기
        • 예시) Member 도메인
          • Member.java
            • Gender.java → enum type
              • 결과
                • notion image
        1. 연관 관계 넣어주기
            • 예시) Member 도메인과 Player 도메인
              • Player.java
                •  
          💡
          잠깐,,, 도메인 생성 중 int랑 Integer 차이가 헷갈린다면?

          (참고) inv vs Integer

          int : 자료형(primitive type)
          • 산술 연산 가능함
          • null로 초기화 불가
          Integer : 래퍼 클래스 (Wrapper class) - 기본형을 객체로 다루기 위해 사용하는 클래스
          • Unboxing하지 않을 시 산술 연산 불가능함
          • null값 처리 가능

          (3) 엔티티 vs VO

          • 도메인
            • 정의) 개발하는 기능에 필요한 객체들을 도출해낸 것
            • 특징) 도메인의 개념을 Entity와 VO(Value Object)로 나눌 수 있음
          • 엔티티
            • 정의) 식별자를 가짐
            • 특징) 식별자를 제외한 것들은 값이 바뀌어도 바뀌기 전/후가 같은 객체임
          • VO
            • 정의) 식별자 없이 값만 가짐
            • 특징) 값이 변경되면 다른 객체가 되어 버림
           

          하루 정리

          TIL 작성하기
          3시 30분 데브코스 면접
          6시 GDSC 웹 강의 실습 보조
          NOI
          도메인 생성
           
          도메인 생성, Entity vs Vo, int vs Integer