본문으로 건너뛰기

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​