백엔드 공부용으로 CRUD 기능을 갖는 아주 간단한 게시판을 만들어보고자 한다.
본격적인 개발에 앞서 기본적인 서비스의 요구사항부터 정의해보자.
1. 요구사항
- 로그인은 생략(나중에 추가)
- 메인 화면에서 게시글 바로 확인 가능 (최대 5개까지)
- "글 목록" 에서 글 번호, 제목, 내용(미리보기), 작성일시, 작업(수정, 삭제) 확인 가능
- 글들은 최신순 정렬
- "게시글 상세" 에서는 글 번호, 제목, 내용, 작성일시 확인 및 수정, 삭제 가능
- 게시글 작성할 때 제목 또는 내용 미입력 시 글 생성 불가
간단하게 이 정도로 요구사항을 정하고 추후 로그인 기능까지 업데이트 해보고자 한다.
이제 위 요구사항이 반영된 Use Case Diagram을 만들어서 사용자 관점에서 시스템이 어떻게 작동하는지 확인해보자.
2. Use Case Diagram

주요 기능 (Use Case)
- 게시글 작성 (CREATE)
- 게시글 조회 (READ)
- 게시글 수정 (UPDATE)
- 게시글 삭제 (DELETE)
- 게시글 목록 조회
요구사항 분석까지 마쳤으니 다음으로 DB를 설계해보자.
3. DB설계 (ERD)
DB 설계 과정에서는 아래의 3가지 부분을 신경써야 한다.
- 데이터 구조를 먼저 정의
- 엔티티와 관계 설정
- 필드/속성 정의
현재 만들어 갈 게시판은 아직 User가 적용되지 않았으니 Board 테이블만 정의하면 될 것이다. 따라서 따로 관계는 설정할 필요가 없다.

속성 설명
- 게시판 번호(board_id) - AUTO_INCREMENT 로 설정하여 글 작성 시 자동으로 부여되게 한다.
- 글 제목(title) - 제목은 100자까지 입력 가능, 미입력시 글 작성 불가
- 글 내용(content) - 내용은 8000자까지 넉넉히 입력 가능, 미입력시 글 작성 불가
- 생성시간(created_at) - 기본값은 CURRENT_TIMESTAMP 로 설정하여 현재 시간에 맞게 자동 설정되게 한다. 이를 통해 최신순 정렬 가능.
- 수정시간(updated_at) - ON UPDATE CURRENT_TIMESTAMP 를 통해 수정 시 자동 갱신되게 한다.
DB 설계를 마쳤으니 UI 설계로 넘어가자.
4. UI 설계
간단하게 어떤 아키텍처와 어떻게 페이지들을 구성할지 정의해보자.
1. 전체 아키텍처
- 전통적인 MVC 패턴 + AJAX 기반 SPA 스타일
- 백엔드: Spring Boot (Thymeleaf 템플릿 + REST API)
- 프론트엔드: jQuery + AJAX로 동적 데이터 처리
2. 페이지 구조 - 총 4개의 페이지
- 게시글 목록 (/boards - list.html)
- 게시글 상세 (/boards/{id} - detail.html)
- 게시글 작성 (/boards/create - create.html)
- 게시글 수정 (/boards/{id}/edit - edit.html)
3. API 엔드포인트
- GET /api/boards - 목록 조회 (페이징)
- GET /api/boards/{id} - 상세 조회
- POST /api/boards - 게시글 작성
- PATCH /api/boards/{id} - 게시글 수정
- DELETE /api/boards/{id} - 게시글 삭제
이 정도만 하고 이제 간단한게 Class diagram을 만들어보자.
5. UML - Class Diagram

구성 설명
위 다이어그램은 Spring Boot 기반 게시판 시스템의 계층형 아키텍처를 보여준다.
각 계층이 명확히 분리되어 있으며, 단방향 의존성을 유지한다.
- Presentation Layer (표현 계층)
- Board Controller (REST API): RESTful API 엔드포인트 제공
- JSON 형태로 데이터 주고받기
- 모바일 앱, SPA 등과 통신
- BoardWebController (MVC): 웹 페이지 컨트롤러
- HTML 뷰 렌더링
- 폼 제출 처리
- Board Controller (REST API): RESTful API 엔드포인트 제공
- Business Layer (비즈니스 계층)
- BoardService: 핵심 비즈니스 로직 처리
- 트랜잭션 관리
- 유효성 검증
- 데이터 변환
- DTO (Data Transfer Objects):
- BoardPostDto: 게시글 생성 시 사용
- BoardPatchDto: 게시글 수정 시 사용
- BoardResponseDto: 조회 결과 반환 시 사용
- BoardService: 핵심 비즈니스 로직 처리
- Persistence Layer (영속성 계층)
- BoardRepository: 데이터베이스 접근 담당
- JPA Repository 인터페이스
- CRUD 작업 수행
- BoardRepository: 데이터베이스 접근 담당
- Domain Model
- Board Entity: 게시글 도메인 객체
- 데이터베이스 테이블과 매핑
- 비즈니스 규칙 포함
- Board Entity: 게시글 도메인 객체
데이터 흐름은 다음과 같다.
- 사용자 요청 → Controller
- Controller → Service 호출
- Service → DTO 변환 및 비즈니스 로직 처리
- Service → Repository를 통한 데이터 접근
- Repository → Entity 조작
- 결과를 역순으로 반환
총 5단계를 통해 요구사항 및 설계 단계를 완료했다.
상당히 귀찮고 시간이 소요되는 작업들이지만, 건물도 기초가 탄탄해야 무너지지 않듯 구체적인 설계 과정이 있어야 좋은 서비스를 만들어 낼 수 있다고 본다.
이제 설계를 마치고 다음 글부터 본격적인 구현 단계로 넘어가보자.
'개발 > java' 카테고리의 다른 글
| [Java] JPA란? (1) | 2026.03.20 |
|---|---|
| [Java] 게시판 만들기 - 3 (0) | 2025.09.14 |
| [Java] 게시판 만들기 - 2 (0) | 2025.09.08 |
| [Java] 게시판 만들기 - 1 (0) | 2025.09.07 |
| [Java] main method 분석 (2) | 2025.08.08 |