게시판 시스템 예제
TODO
This document is under construction. 전체 구현 예제가 추가될 예정입니다.
Overview
ElastiCORE를 사용하여 게시판(BBS) 시스템을 구현하는 전체 과정을 단계별로 안내합니다.
Domain Model
Entity Definition
entity:
BaseEntity:
meta: entity @abstract
fields:
createDate: datetime @search(between) @updatable(false) @jpa:org.springframework.data.annotation.CreatedDate
createdBy: string(20) @updatable(false) @jpa:org.springframework.data.annotation.CreatedBy
AuditEntity:
meta: entity @abstract @extend(BaseEntity)
fields:
lastModifiedBy: string(20) @jpa:org.springframework.data.annotation.LastModifiedBy
lastModifiedDate: datetime @jpa:org.springframework.data.annotation.LastModifiedDate
Board:
meta: entity @expose(50) @extend(AuditEntity)
fields:
bid: long @id @sequence -- 게시판 ID
name: string(100)! @search(like) -- 게시판명
boardType: BoardType -- 게시판 타입
articles: List<Article> @dtype(List<ArticleDTO>) @OneToMany(mappedBy="board")
Article:
meta: entity @expose(50) @extend(AuditEntity)
fields:
aid: string @id @genid -- 글 ID
title: string(200)! @search(like) -- 제목
content: text -- 본문
board: Board @ManyToOne -- 상위 게시판
Enumeration Definition
enumeration:
BoardType:
meta: enum @db(code) @json(code)
fields:
code: string(2) @length(3) -- 타입코드
name: string(50) -- 이름
enum:
PUBLIC: PB,공개
PRIVATE: PV,개인
NOTICE: NT,공지사항
DTO Definition
dto:
ArticleDTO:
meta: dto @template(Article)
fields:
boardName: string @ref(board.name) -- 게시판명
boardType: BoardType @ref(board.boardType) -- 게시판 타입
Code Generation 및 실행
# 1. 코드 생성
./gradlew elcore
# 2. 빌드
./gradlew build
# 3. 실행
./gradlew bootRun