[Java] 게시판 만들기 - 0

2025. 9. 7. 16:43·개발/java
반응형

백엔드 공부용으로 CRUD 기능을 갖는 아주 간단한 게시판을 만들어보고자 한다. 

본격적인 개발에 앞서 기본적인 서비스의 요구사항부터 정의해보자. 

 

1. 요구사항

  1. 로그인은 생략(나중에 추가) 
  2. 메인 화면에서 게시글 바로 확인 가능 (최대 5개까지) 
  3. "글 목록" 에서 글 번호, 제목, 내용(미리보기), 작성일시, 작업(수정, 삭제) 확인 가능
  4. 글들은 최신순 정렬
  5. "게시글 상세" 에서는 글 번호, 제목, 내용, 작성일시 확인 및 수정, 삭제 가능
  6. 게시글 작성할 때 제목 또는 내용 미입력 시 글 생성 불가 

간단하게 이 정도로 요구사항을 정하고 추후 로그인 기능까지 업데이트 해보고자 한다. 

이제 위 요구사항이 반영된 Use Case Diagram을 만들어서 사용자 관점에서 시스템이 어떻게 작동하는지 확인해보자.

 

2. Use Case Diagram

CRUD게시판 - Use Case Diagram

주요 기능 (Use Case)

  • 게시글 작성 (CREATE)
  • 게시글 조회 (READ)
  • 게시글 수정 (UPDATE)
  • 게시글 삭제 (DELETE)
  • 게시글 목록 조회 

요구사항 분석까지 마쳤으니 다음으로 DB를 설계해보자.

 

3. DB설계 (ERD)

DB 설계 과정에서는 아래의 3가지 부분을 신경써야 한다. 

 

  • 데이터 구조를 먼저 정의
  • 엔티티와 관계 설정
  • 필드/속성 정의

현재 만들어 갈 게시판은 아직 User가 적용되지 않았으니 Board 테이블만 정의하면 될 것이다. 따라서 따로 관계는 설정할 필요가 없다.

CRUD게시판 - ERD

 

속성 설명

  • 게시판 번호(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

CRUD게시판 - Class Diagram

구성 설명

위 다이어그램은 Spring Boot 기반 게시판 시스템의 계층형 아키텍처를 보여준다.

각 계층이 명확히 분리되어 있으며, 단방향 의존성을 유지한다.

  1. Presentation Layer (표현 계층)
    • Board Controller (REST API): RESTful API 엔드포인트 제공
      • JSON 형태로 데이터 주고받기
      • 모바일 앱, SPA 등과 통신
    • BoardWebController (MVC): 웹 페이지 컨트롤러
      • HTML 뷰 렌더링
      • 폼 제출 처리
  2. Business Layer (비즈니스 계층)
    • BoardService: 핵심 비즈니스 로직 처리
      • 트랜잭션 관리
      • 유효성 검증
      • 데이터 변환
    • DTO (Data Transfer Objects):
      • BoardPostDto: 게시글 생성 시 사용
      • BoardPatchDto: 게시글 수정 시 사용
      • BoardResponseDto: 조회 결과 반환 시 사용
  3. Persistence Layer (영속성 계층)
    • BoardRepository: 데이터베이스 접근 담당
      • JPA Repository 인터페이스
      • CRUD 작업 수행
  4. Domain Model
    • Board Entity: 게시글 도메인 객체
      • 데이터베이스 테이블과 매핑
      • 비즈니스 규칙 포함

데이터 흐름은 다음과 같다.

 

  1. 사용자 요청 → Controller
  2. Controller → Service 호출
  3. Service → DTO 변환 및 비즈니스 로직 처리
  4. Service → Repository를 통한 데이터 접근
  5. Repository → Entity 조작
  6. 결과를 역순으로 반환

 

총 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
'개발/java' 카테고리의 다른 글
  • [Java] 게시판 만들기 - 3
  • [Java] 게시판 만들기 - 2
  • [Java] 게시판 만들기 - 1
  • [Java] main method 분석
danieLee
danieLee
개발일지
  • danieLee
    Code log
    danieLee
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • 개발 (76)
        • C++ (3)
        • java (6)
        • JavaScript (9)
        • python (0)
        • AWS (2)
        • Docker (6)
        • git (0)
        • 백엔드 (4)
        • Spring (7)
        • Django (2)
        • AI (3)
        • 코테 준비 (13)
        • 알고리즘 (6)
        • SKALA 4기 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코테
    vue.js
    4기
    프론트
    개념
    백엔드
    프로그래머스
    서버
    개발자
    JavaScript
    Ai
    skala
    API
    대학생
    spring
    알고리즘
    java
    파이썬
    개발
    js
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
danieLee
[Java] 게시판 만들기 - 0
상단으로

티스토리툴바