관심쟁이 영호

[#6] Spring Boot ㅣ 스프링 부트 ㅣ 도메인 모델과 테이블 설계 본문

Bank-End/인프런- Spring 공부

[#6] Spring Boot ㅣ 스프링 부트 ㅣ 도메인 모델과 테이블 설계

관심쟁이 영호 2021. 4. 5. 01:56
반응형

오늘은 도메인 모델과 테이블 설계에 관한 강의를 수강할 예정이다.

 

도메인이란?

소프트웨어 공학에서 도메인 모델(domain model)은 행위와 데이터를 둘 다 아우르는 도메인의 개념 모델이다.

 

쉽게 말하자면,

데이터는 어떤형식으로 저장하는가?

데이터 CRUD는 어떻게 구상해야하나? 로 정리를 할 수 있을것이다.

 

이 단계부터 정확하고 확실하게 해야 나중에 힘들지 않다는 건, 누구나 알것이다.

건물을 거의 다 짓고, 소방 시설이나 수도 시설을 새로 뜯어고치는 건 너무나 힘든일이니까.

 


수강중인 강의는

경험이 많으신 현직 개발자님이 개발과정을 다루는 것이기 때문에,

배워두면 전반적인 실무 흐름을 파악할 수 있을것이다.

 

시작해보자.

 

1. 개발전체를 하나씩 모듈화 시킨다.

- 회원, 주문, 배송, 주문상품, 카테고리, 상품(도서, 음반, 영화)

- 이렇게 나누게 되면, 개발하는데 더욱 다루기가 쉬울테니까.

- 일 대 다, 다 대 다, 일 대 일 매칭을 시켜준다.

- 강의자료를 올릴 수는 없기에, 대충 그림으로 그려본다.

 

 

 

- 위와 같이 대충 그려보았다. 해당하는 설계를 도와주는 툴은 "StarUML"이라고 있는데, 사용하면 더 좋을 것이다. 근데 나는 컴퓨터 용량이 부족하여 삭제를 시킨 상태다..

 

- 그림을 살펴보면 회원:주문 = 1: * 관계이다. 회원 1명이 주문은 무한으로 할 수 있기 때문이다.

- 주문 1번에 배송은 1번만 이루어질 수 있다. (실제로는 여러번도 있는데, 1번으로 약속한다.)

 

2. 회원 엔티티 분석

- 조금더 Low한 레벨로 내려가면, 실제로 어떤 기능을 하는 지 살펴본다.

- 대충 그리자면, 

이렇게 나타낼 수 있다. 이 박스 한개가 객체를 의미하며, 박스 내부에 있는 것은 해당 객체가 가지고 있는 것이다. 전부 필요한 내용이다. 1번에서 나온 모든 것이 이렇게 박스화 되어야 한다.(너무 자세히는 아니고 추상적으로)

 

- 너무 분석하지 않아도 된다. 지금은 따라가는 것이니까. 강의를 수강하고 나의 프로젝트할 때, 참고하여 진지하게 고민을 해보자.

 

 

※ 실무에서는 "다 : 다" 관계는 사용해서는 안된다고 하신다.  그리고 단방향 관계로 하자. 참고하자.

 

3. 회원 테이블 분석

- 모든 객체를 이렇게 의존관계와 객체 내용을 적어주어야 한다.

- 각자 테이블이 가지고 있는 내용과 의존관계를 표시한다.

- 이렇게 설계하는 것 또한 노하우가 필요하고 탄탄하게 하여야, 서비스하는데 장애가 생기지 않겠지..

 

4. 연관관계 매핑 분석

 

(1) 회원과 주문:

일대다, 다대일의 양방향 관계이다. 이 상황에는 연관관계에서 주인이 필요하다고 하신다.

이 경우에는 외래 키가 있는 주문을 연관관계의 주인으로 정하는 것이 좋다고 하신다.

(보통 다 측에 외래 키가 있다.)

 

(2) 주문상품과 주문:

다대일, 양방향 관계이다.

외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인이다.

 

더 있지만 여기까지만 다룬다.

느낌 파악 했으니까.

 

※ 그럼 여기서 왜 연관 관계에 신경을 쓰고, 주인을 정하는 지 궁금해 졌다.

다른 곳에서 찾아보니 이유를 예로 들면,

사람 - 회사 관계에서 회사를 알아 내기 위해서는,

사람 -> id알아내기 -> 회사와 비교하여 찾아내기

이렇게 해야하야 해서 진짜 안좋다고 한다.

 

 

 

해당 강의는 인프런의 "김영한" 개발자님의 강의 정리했습니다.

www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard

300x250
Comments