계층형 카테고리


기능 요구사항

추가 기능

  • 여러 형태의 카테고리 구현
  • 이름은 동일하나, 각 카테고리별로 다른 공지사항 게시판 포함
  • 동일한 게시판이나, 각각 다른 카테고리에 소속되는 익명 게시판 포함

필수 기능

  • 카테고리 식별자 및 카테고리명으로 검색 가능
  • 카테고리 검색 시, 카테고리의 하위 카테고리까지 조회 가능
  • Json 구조로 변환 가능

ERD

DB table

ERD

💡 category 테이블의 parent_idx 컬럼은 상위 카테고리 식별번호를 의미하며, 재귀 호출을 통해 카테고리 계층을 조회함.
💡 board 테이블은 category 테이블의 PK인 cno를 FK로 가지고 있어, 각 카테고리별 게시물 작성 및 조회 가능함.

Project Structure

test-board
    ├── README.md
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   │   └── com
        │   │       └── test
        │   │           └── board
        │   │               ├── common
        │   │               │   └── config
        │   │               │       └── JsonConfig.java
        │   │               ├── controller
        │   │               │   ├── CategoryController.java
        │   │               │   └── HomeController.java
        │   │               ├── dao
        │   │               │   ├── CategoryDao.java
        │   │               │   └── CategoryDaoImpl.java
        │   │               ├── domain
        │   │               │   └── CategoryDto.java
        │   │               └── service
        │   │                   ├── CategoryService.java
        │   │                   └── CategoryServiceImpl.java
        │   ├── resources
        │   │   ├── application.properties
        │   │   ├── mapper
        │   │   │   └── categoryMapper.xml
        │   │   └── mybatis-config.xml
        │   └── webapp
        │       ├── WEB-INF
        │       │   ├── spring
        │       │   │   ├── appServlet
        │       │   │   │   └── servlet-context.xml
        │       │   │   └── root-context.xml
        │       │   ├── views
        │       │   │   └── index.jsp
        │       │   └── web.xml
        │       └── resources
        └── test
            └── java
                └── com
                    └── test
                        └── board
                            ├── dao
                            │   └── CategoryDaoImplTest.java
                            └── service
                                └── CategoryServiceImplTest.java


주요 기능

다중 카테고리 기능

기술 스택

🔧 Enviroment

IntelliJ Git Github Maven

🔨 Tool

Backend

Java Spring Framework MyBatis JUnit
JUnit

Frontend

HTML/CSS/JS jQuery Json JSP Ajax

Database

MySQL

Web Server

Apache Tomcat

Commit Message Convention

규칙

- 제목 첫글자는 대문자 사용
- 제목 마침표 미포함
- 제목과 본문은 빈 행으로 구분
- 제목 명령문으로 작성
- 제목 50자 이내로 간결하게 작성

유형

[Feat]        :     새로운 기능 추가
[Test]        :     테스트 코드 완료
[Docs]        :     문서 추가 또는 수정 (ex. README 변경)
[Chore]       :     패키지 매니저(ex. gitignore 수정), 빌드 업무 수정 
[Refactor]    :     리팩토링, 코드 개선
[Fix]         :     버그 수정
[Style]       :     코드 스타일 변경 (포맷팅, 세미콜론 누락 등 코드 변경이 없는 경우)
[Comment]     :     주석 추가 및 수정
[Rename]      :     파일 또는 폴더명을 수정하거나 이동하는 작업만 수행한 경우
[Remove]      :     파일을 삭제하는 작업만 수행한 경우
[Conflict]    :     합병 시 발생한 충돌 수정