본문으로 건너뛰기

DSL 개요

TODO

This document will be expanded later.

Overview

ElastiCORE DSL은 YAML 기반의 선언적 도메인 모델 정의 언어입니다. 개발자는 복잡한 Java 코드를 직접 작성하는 대신, 간결한 YAML 문법으로 도메인 모델을 정의합니다.

YAML 기반 선언적 모델링

Why YAML?

  • 가독성: 사람이 읽기 쉬운 포맷
  • 학습 곡선 최소화: 별도의 문법 학습 부담 없음
  • 도구 지원: 대부분의 IDE에서 YAML 지원
  • 버전 관리 용이: Git diff로 변경사항 쉽게 추적

DSL Components

ElastiCORE DSL은 다음 5가지 핵심 구성 요소로 이루어집니다:

구성 요소설명상세 문서
EntityJPA 엔티티 정의Entity 정의
DTO데이터 전송 객체 정의DTO 정의
Enumeration열거형 정의Enumeration 정의
Repository커스텀 쿼리 정의Repository 정의
Port외부 시스템 통신 정의Port 개요

기본 문법

# Entity Definition
entity:
User:
meta: entity @expose(20)
fields:
userId: long @id @sequence
name: string(100)! @search(like)

# DTO Definition
dto:
UserDTO:
meta: dto @template(User)
fields:
additionalField: string

# Enumeration Definition
enumeration:
UserStatus:
meta: enum @db(code) @json(code)
fields:
code: string(1) @code
description: string(20)
enum:
ACTIVE: A,활성
INACTIVE: I,비활성

# Port 정의
port:
ExternalApiPort:
meta: http @url("https://api.example.com")
methods:
getUser:
meta: method @get("/users/{id}")
params:
id: long
return: UserDTO

File Structure

DSL 정의 파일은 ./resources/blueprint/{도메인명} 디렉토리 하위에 위치합니다:

resources/
└── blueprint/
└── myDomain/
├── env.yml # 환경 설정
├── entity.yml # 엔티티 정의
├── dto.yml # DTO Definition
├── enumeration.yml # 열거형 정의
└── port.yml # Port 정의

Next Steps