■ 배포 주소 (실제 동작 확인)
http://43.201.55.31:8080
주요 페이지
■ 로컬 실행 방법
1. board-project_제출용.zip 압축 해제
2. MariaDB 실행
cd board-project
docker-compose up -d
3. application.yml의 DB 접속 정보 확인 (기본값: localhost:3306/board_db, root/1234)
4. 애플리케이션 실행
mvn spring-boot:run
5. 브라우저에서 http://localhost:8080 접속
(앱 최초 기동 시 DatabaseInitializer가 CREATE/ALTER/INDEX/VIEW DDL을 자동 실행함)
■ 요구사항 체크리스트
[요구사항]
1. MyBatis를 이용한 Mapper 생성
-> PostMapper.xml, KnowledgePostMapper.xml
2. 간단한 CRUD는 JPA Repository로 구현
-> CommentRepository, PostLikeRepository, TagRepository, UserRepository 등
3. 테이블 생성(CREATE)/수정(ALTER)/삭제(DROP) DDL이 Mapper에 반영
-> PostMapper.xml: createPostStatsTable(CREATE), alterPostsAddThumbnail(ALTER),
dropPostStatsTable(DROP)
-> 앱 실행 시 DatabaseInitializer가 CREATE/ALTER 자동 실행
-> DROP은 /admin/datadic 화면의 "DROP -> CREATE 실행" 버튼으로 실제 동작 확인 가능
(post_stats는 서비스 로직에서 사용하지 않는 DDL 검증 전용 테이블이라 안전하게 실행됨)
4. 생성된 테이블의 인덱스/뷰 목록 확인용 데이터사전 조회 명령문 작성
-> PostMapper.xml: selectTableList / selectTableColumns / selectIndexList /
selectViewList / selectForeignKeyList (INFORMATION_SCHEMA 기반)
-> /admin/datadic 화면에서 실제 조회 결과 확인 가능
5. 완성된 프로젝트를 AWS에 배포
-> AWS Lightsail(EC2 유형) http://43.201.55.31:8080 배포 완료
[기본 SQL]
- 테이블 목록/구조/제약조건(PK, FK, NOT NULL) 조회
-> selectTableList(테이블 목록), selectTableColumns(PK/NOT NULL 등 컬럼 구조),
selectForeignKeyList(FK 전용 조회) — /admin/datadic에서 확인
- JOIN/서브쿼리/집합연산자 1개 이상 반영된 조회
-> PostMapper.xml searchPosts: JOIN users + 댓글수/좋아요수 서브쿼리
(게시글 목록/검색 기능에 실제로 사용됨)
- DDL(CREATE/DROP/ALTER) 실제 테이블 구조 반영
-> DatabaseInitializer 실행 로그(app.log) 또는 /admin/datadic에서 확인
[고급 SQL]
- 인덱스/뷰 목록 조회 명령문
-> selectIndexList, selectViewList — /admin/datadic에서 확인
- 조회 성능용 인덱스 1개 이상 + 실제 쿼리 활용
-> idx_posts_category (WHERE p.category = ... 에 활용)
-> idx_posts_created_at (ORDER BY p.created_at DESC 에 활용)
-> 둘 다 searchPosts(게시글 목록/검색)에서 실제로 사용됨
■ 참고