Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 프로그래머스제일작은수
- java set 저장
- 코딩부트캠프후기
- java list 저장
- 격파르타후기
- java map
- 노베이스부트캠프
- 컴파일
- 작은수제거하기
- java기본자료형
- java알고리즘
- 프로그래머스
- java map 저장
- 인터프린터언어
- 격파르타장점
- java map 출력
- java알고리즘문제풀이
- java최솟값구하기
- 격파르타합격후기
- javaJVM
- 비전공자sqld
- java 자료구조 활용
- 격파르타비전공자
- 항해15기
- javaJRE
- sqld자격증합격
- java list 출력
- java참조자료형
- java set 출력
- 항해99후기
Archives
- Today
- Total
코딩과 결혼합니다
[영화 예매 웹사이트] Spring boot 패키지 구조 본문
728x90
⭐개요
영화 예매 웹사이트 프로젝트를 진행하며, 시작하기 전에 패키지 구조를 어떻게 구성하면 좋을지 알아보고 선택하고자 함.
패키지 구조에는 정답은 없으며 용어에 대한 이해와 유지보수에 초점을 두고 설계하는 것을 목표로 한다.
⭐용어
DAO
= Date Access Object
DB와 프로그램 사이를 연결해 주는 다리 역할. 프로그램이 데이터 베이스에 데이터를 저장하거나 읽어올 때, 직접 하는 대신에 DAO를 통해서 한다. DB에 접근하지 위한 로직 & 비즈니스 로직을 분리하기 위해 사용
class BookDAO {
void saveBook(Book book) {
// 책을 데이터베이스에 저장하는 코드
}
Book getBookById(int id) {
// 데이터베이스에서 책을 가져오는 코드
return new Book();
}
}
DTO
= Date Access Object
데이터를 여러 부분으로 나누어 전달하는 대신, DTO 하나로 묶어서 한 번에 전달한다.
로직을 가지지 않는 순수한 데이터 객체(getter & setter만 가진 클래스)이다.
class BookDTO {
String title;
String author;
int price;
// 여기서 getter와 setter를 사용해 데이터를 옮김
}
VO
=Value Object
값을 저장하고 그 값을 변경하는 객체. 주로 여러 속성을 하나로 묶어서 사용하는데, 그 값이 한 번 설정되면 변하지 않음.
read-Only 특징을 가지고 있다. (DTO와 유사하지만 VO는 getter만 가진 클래스)
class AddressVO {
final String street;
final String city;
AddressVO(String street, String city) {
this.street = street;
this.city = city;
}
// 값은 생성자에서 설정되고 변경되지 않아
// 예시 : 주소 - 보통 변하지 않고 그대로 사용된다.
}
계층형 구조
각 계층을 패키지로 나누어 관리한다. 각 계층의 역할이 명확해지고, 코드의 가독성과 유지보수성이 좋아진다.
src/
│
├── presentation/
│ └── UserController.java
│
├── business/
│ └── UserService.java
│
└── data/
└── UserDAO.java
도메인형 구조
각 도메인 모델을 중심으로 패키지를 나누어 관리한다. 도메인 관련 코드가 한 곳에 모여 있어 관리가 쉽다.
src/
│
├── user/
│ ├── User.java
│ ├── UserService.java
│ └── UserDAO.java
│
└── order/
├── Order.java
├── OrderService.java
└── OrderDAO.java
⭐계층형 구조로 패키지 구조 결정
프로젝트의 규모가 크지 않기 때문에 전체적인 구조를 빠르게 파악할 수 있는 계층형 구조를 선택한다.
(도메인형 구조로 간다면 오히려 너무 많은 파일들로 쪼개질 것 같다.)
'코딩과 매일매일♥ > 영화예매' 카테고리의 다른 글
[영화 예매 웹사이트] Spring Boot / Entity 생성과 연관 관계 설정 (0) | 2024.06.13 |
---|---|
[영화 예매 웹사이트] Figma로 웹페이지 구상하기 (0) | 2024.06.11 |
[영화 예매 웹사이트] API 문서 작성 (0) | 2024.06.09 |
[영화 예매 웹사이트] 시스템 아키텍처 설계 (1) | 2024.06.08 |
[영화 예매 웹사이트] Jira 사용법 숙지 + 적용 (0) | 2024.06.08 |