728x90

들어가며


스프링 프레임워크 기본편을 수강하고서, 간단한 웹 어플리케이션을 만들기 위해 스프링 부트로 넘어오게 되었다. 아직 MVC패턴, DB연동기술 그리고 고급 활용에 대해 공부할게 많지만 간단하게나마 웹 페이지를 구축하고 나면 이후 학습에 도움이 되리라고 생각한다!

프로젝트 설정


핵심 라이브러리
스프링 MVC
스프링 ORM
JPA, 하이버네이트
스프링 데이터 JPA
기타 라이브러리
H2 데이터베이스 클라이언트
커넥션 풀: 부트 기본은 HikariCP
WEB(thymeleaf)
로깅 SLF4J & LogBack
테스트

Spring Initializr

위 페이지에서 매우 간단하게 스프링 부트 프로젝트를 세팅할 수 있다.

그리고 프로젝트의 SDK와 Gradle JVM의 버전을 꼭 확인해야한다.

도메인 설계


엔티티와 테이블 분석


가장 먼저 중심부를 보면 ORDERS와 ITEM이 놓여있다. 이로써 상품과 주문을 중심으로 비즈니스 로직이 돌아가는 프로젝트임을 알 수 있다.

 

1. 주문 클래스 위아래로 회원 클래스와 배송 클래스가 붙어 있음을 볼 수 있다.

- 회원 클래스는 일대다로 회원을 기준으로 여러 주문을 가질 수 있다.
- 배송 클래스는 주문과 일대일 관계로 하나의 주문은 하나의 배송을 가진다.

 

2. 상품 클래스는 카테고리와 다대다 관계를 가진다.

그러나, 실제로 직접 다대다 연결을 할 수 없어 중간에 카테고리_상품 클래스를 두고 각각 다대일 관계를 맺어 연결한다.

 

3. 테이블 설계와 연관관계 매핑의 차이:

참조와 매핑이라는 단어를 생각해보면 이해가 쉽다.
공통적으로는 정보덩어리인 엔티티를 연결시킨다.
테이블 설계는 데이터베이스에서 테이블 간의 참조를 통한 관계 형성을 다루고, 연관관계 매핑은 객체간의 관계를 설정한다.
쉽게 테이블 참조는 비교적 간단한 관계 형성에 사용된다. 이를테면 회원과 주문이 있을 때, 이 주문이 어떤 회원의 것인지 알기 위해 회원의 고유키를 주문의 외래키로 참조하는 것이다.
반면, 객체의 관계에서는 좀더 복잡해진다. 주문과 배송은 각각 서로를 위해 존재한다. 하나의 주문에는 하나의 배송이 있어야 하고 하나의 배송에는 하나의 주문 정보가 필요하다. 반대로 회원과 주문처럼 한명의 회원이 여러 주문을 가지는 관계도 있다. 

 

 

+ Recent posts