1. 디렉토리 구조 🧬
디렉토리의 구조는
controller
, domain
, service
, dto
로 나누었다.
- controller
- URL과 실행 함수를 매핑
- 비즈니스 로직이 있는 service를 호출하여 비즈니스 로직 처리
- 반환할 템플릿을 정의 및 Json 등으로 응답
- domain
- entity
- db 테이블과 매핑되는 객체(entity)를 정의
- jpa에서는 entity를 통해 데이터를 조작
- repository
- 데이터를 가져오거나 조작하는 함수를 정의
- interface를 implements하여 미리 만들어진 함수를 사용할 수 있으며, 직접 구현 가능
- entity
- dto
- controller와 service 간에 주고 받을 객체를 정의하며, 최종적으로는 view에 뿌려줄 객체
- entity와 속성이 같을 수 있으나, 여러 service를 거쳐야 하는 경우 dto의 몸집은 더 커진다.
- ex) A Entity에 a 속성, B Entity에 b속성이 있을 때, ZDto에 a,b 속성으로 정의될 수 있다.
✅ entity와 dto를 분리한 이유:
테이블과 매핑되는 Entity 클래스를 Request/ Response 클래스로 사용해서는 안된다.
Entity 클래스는 가장 Core한 클래스이기 때문에 수많은 서비스 클래스나 비지니스 로직들이 Entity 클래스를 기준으로 동작한다.
Entity 클래스가 변경되면 여러 클래스에 영향을 끼치게 된다.
그런데, Request와 Response용 DTO는 View를 위한 클래스라 정말 자주 변경이 필요하다.
이 때문에 View Layer와 DB Layer를 철저하게 역할 분리를 해주는 것이 좋다.
실제로 Controller에서 결과값으로 여러 테이블을 조인해서 줘야할 경우가 빈번하기 때문에 Entity 클래스만으로 표현하기가 어려운 경우가 많다.
2. LiveReload 💾
개발 시 소스가 변할 때 마다 서버를 재가동 시키고 일일이 버튼을 눌러줘야 한다.
이 작업을 줄이기 위한 devtools
- LiveReload는 소스에 변화가 있을 때 application이 자동으로 브라우저 새로 고침을 트리거 할 수 있게 해주는 프로토콜
- livereload.com에서 Chrome, Firefox, Safari용 플러그인을 설치하여 사용할 수 있음(npm의 hot-reload-server처럼 새로고침없이 바로 갱신 됨)
1) build.gradle에 의존성을 추가해준다.
나는 처음에 스프링 프로젝트 생성 시 dependencies에 추가해주었기 때문에 필요 없었다.
2) IntelliJ 환경 설정
ctrl + alt + S 를 눌러 설정창을 연다.
빌드,실행,배포
> 컴파일러
프로젝트 자동 빌드를 체크하고 적용해준다.
고급 설정
>
개발된 애플리케이션이 현재 실행 중인 경우에도 auto-make가 시작되도록 허용 을 체크하고 적용해준다.
3) LiveReload++ 설치
https://chrome.google.com/webstore/detail/livereload%20%20/ciehpookapcdlakedibajeccomagbfab
LiveReload 설치 시 알 수 없는 에러 이슈가 있어서, 그냥 ++로 깔았다.
이렇게 초록색 체크표시가 되면 성공
📖 reference
2) 스프링부트로 웹 서비스 출시하기 - 2. SpringBoot & JPA로 간단 API 만들기
'Backend 🧦 > Java 🌈' 카테고리의 다른 글
[Spring boot] 01 준비작업(1) - IntelliJ 프로젝트 생성, DB 연결 (0) | 2023.01.20 |
---|
댓글