본문으로 건너뛰기

게시판 시스템 예제

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

Generated API

커스터마이징