템플릿 본문에서 사용할 수 있는 컨텍스트 객체의 속성과 도구(tool) 함수 전체 목록입니다. 코드 생성 시점에 아래 변수들이 Velocity 컨텍스트에 주입됩니다.
컨텍스트 한눈에 보기
코드 생성 시 템플릿이 접근할 수 있는 최상위 변수들입니다.
| 변수 | 설명 |
|---|
$entity | 현재 테이블의 엔티티 — 이름·필드 목록·소프트 삭제 설정 + 팩이 선언한 엔티티 변수 |
$field | 엔티티의 필드 하나 — #foreach($field in $entity.fields) 로 순회 |
$env | 프로젝트 전역 변수 — 프로젝트 설정의 Templates Variables 입력값 |
$table | 원본 테이블 — 테이블명·스키마·PK 컬럼 목록 등 |
$projectConfig | 프로젝트 설정 전체 — Audit Table 설정(auditConfig) 포함 |
$databaseInfo | 대상 DBMS 정보 — 제품명·버전 (직접 읽기보다 $codegen.isOracle() 등 권장) |
$paid | 현재 계정의 유료 플랜 여부 (boolean) |
$codegen · $types … | 도구(tool) — 아래 $codegen · $types · $java · $ts · $py 함수 참조. Velocity 표준 DateTool($date)도 사용할 수 있습니다. |
팩 변수의 평탄화(flatten)
언어 프로필에 선언한 엔티티 변수와 필드 변수는 렌더 직전에 $entity / $field 루트로 평탄화됩니다. 예를 들어 엔티티 변수 subPackage 를 선언했다면 템플릿에서 $entity.subPackage 로 바로 읽습니다. 같은 이름의 기본 속성이 있으면 팩 변수 값이 우선합니다.
$entity — 엔티티
현재 생성 대상 테이블의 엔티티입니다. 이름 변형(케이스 변환)은 미리 계산되어 속성으로 제공됩니다.
| 속성 | 설명 |
|---|
name | 엔티티 이름 (테이블 상세 Code Generator 탭의 NAME, 보통 PascalCase) |
comment | 테이블 코멘트 |
alias | 별칭 (Code Generator 탭의 Alias) |
var | name 의 lowerCamel — 예: myName (변수명으로 사용) |
snakeLower | name 의 snake_case — 예: my_name |
snakeUpper | name 의 SNAKE_CASE 대문자 — 예: MY_NAME |
kebabLower | name 의 kebab-case — 예: my-name |
kebabUpper | name 의 KEBAB-CASE 대문자 — 예: MY-NAME |
fields | 필드 배열 — #foreach 순회 대상 |
fieldMap | DB 컬럼명 → 필드 맵 — 컬럼명으로 특정 필드를 찾을 때 |
softDelete | 소프트 삭제 설정 객체 (아래 표) |
(entityVariables key) | (팩 엔티티 변수) — 언어 프로필 entityVariables 로 선언한 key 들이 루트에 노출 — 예: $entity.subPackage |
$entity.softDelete 속성
미사용이거나 플래그 컬럼이 없으면 enabled=false 만 보장됩니다. *표시 속성은 생성 시점에 컬럼 타입을 판별해 자동 보강되는 값입니다.
| 속성 | 설명 |
|---|
enabled | 소프트 삭제 사용 여부 |
flagColumn | 삭제 플래그 컬럼 (DB 컬럼명) |
deletedValue | 플래그가 boolean 이 아닐 때 — 삭제를 의미하는 값 (예: Y, 1) |
activeValue | 플래그가 boolean 이 아닐 때 — 미삭제를 의미하는 값 (예: N, 0) |
dateColumn | 삭제 일시 컬럼 (DB 컬럼명, 선택) |
dateFormat | 일시 컬럼이 문자열일 때 저장할 날짜 포맷 |
flagBoolean | * 플래그 컬럼이 boolean 타입인지 |
flagString | * 플래그 컬럼이 문자열 타입인지 (SQL 리터럴 따옴표 분기용) |
flagField | * 플래그 컬럼의 필드명 |
dateString | * 일시 컬럼이 문자열 타입인지 |
dateField | * 일시 컬럼의 필드명 |
$env 와 기타 객체
$env — 프로젝트 전역 변수
언어 프로필의 전역 변수 선언에 사용자가 입력한 값입니다. key 의 점(.)은 중첩 객체가 됩니다 — package.core 로 선언했다면 $env.package.core 로 읽습니다.
$table — 원본 테이블
| 속성 | 설명 |
|---|
name | 테이블명 |
schemaName | 스키마명 |
primaryKeys | PK 컬럼명 배열 (DB 컬럼명) |
columns | 컬럼 배열 (원본) |
$projectConfig — 프로젝트 설정
프로젝트 설정 전체가 노출됩니다. 코드 생성과 직접 관련된 것은 auditConfig 입니다 — 직접 읽기보다 $codegen 의 audit 함수 사용을 권장합니다.
| 속성 | 설명 |
|---|
auditConfig.auditTable | Audit 기준(참조) 테이블 |
auditConfig.aae | Audit Entity Interface 클래스명 |
auditConfig.aaie | Immutable Audit Entity Interface 클래스명 |
auditConfig.creationAuthorList, … | 생성/수정 추적 컬럼명 후보 목록 4종 — creationAuthorList · creationDateList · lastModificationAuthorList · lastModificationDateList |
$databaseInfo — 대상 DBMS
| 속성 | 설명 |
|---|
databaseProductName | JDBC 제품명 — 예: MariaDB. 분기는 $codegen.isMariaDB() 등 권장 |
databaseProductVersion | 제품 버전 (연결해 본 적 없으면 빈 값) |
$paid — 유료 플랜 여부
현재 계정이 유료 플랜인지 나타내는 boolean 입니다. 템플릿이 출력물을 분기하는 데 쓸 수 있습니다.
$codegen 함수
언어 중립 생성 헬퍼입니다. 네이밍 변환, DBMS 분기, PK/필드 선택, audit 판별 등을 제공합니다.
네이밍 · 문자열
| 함수 | 설명 |
|---|
$codegen.toLowerCamel(value) | UpperCamel → lowerCamel. 예: MyName → myName |
$codegen.toUpperCamel(value) | lowerCamel → UpperCamel. 예: myProp → MyProp |
$codegen.toUpperUnderscore(value) | UpperCamel → UPPER_UNDERSCORE. 예: MyName → MY_NAME |
$codegen.toPath(part1, part2, …) | 각 인자의 점(.)을 슬래시로 바꾼 뒤 경로로 결합. 예: com.foo 와 bar → com/foo/bar |
$codegen.join(sep, v1, v2, …) | 빈 값을 건너뛰고 구분자로 결합, 중복된 구분자는 하나로 정리 |
$codegen.replace(text, search, repl) | 문자 치환 — text 의 searchString 문자를 replacement 로 |
$codegen.printIf(cond, value) | cond 가 true 일 때만 value 출력 (아니면 빈 문자열) |
$codegen.printVelocityVar(value) | value 를 달러-중괄호 참조 문자열로 감싸 출력 — 생성 결과물 안에 Velocity 표기를 그대로 남길 때 |
$codegen.printIgnoreFirst(count, value) | count 가 1 이면 빈 문자열, 아니면 value — 루프에서 첫 항목 앞 구분자 생략용 |
DBMS 판별 · SQL 보조
| 함수 | 설명 |
|---|
$codegen.isOracle() | 대상 DBMS 가 Oracle 인지 |
$codegen.isMySQL() | 대상 DBMS 가 MySQL 인지 |
$codegen.isMariaDB() | 대상 DBMS 가 MariaDB 인지 |
$codegen.isPostgreSql() | 대상 DBMS 가 PostgreSQL 인지 |
$codegen.isMsSql() | 대상 DBMS 가 SQL Server 인지 |
$codegen.getColumnName(columnName) | SQL Server 면 대괄호로 감싼 컬럼명, 그 외엔 그대로 |
$codegen.getSchemaPrefix() | 커넥션의 "스키마 접두" 설정이 켜져 있으면 schema. 접두 문자열, 아니면 빈 문자열 |
$codegen.useSchemaPrefix() | 커넥션의 스키마 접두 설정 여부 |
PK · 필드 선택
| 함수 | 설명 |
|---|
$codegen.getPkAttr() | PK 필드 목록 ($table.primaryKeys 순서) |
$codegen.getNonPkAttr() | PK 가 아닌 필드 목록 |
$codegen.isSinglePk() | PK 가 단일 컬럼인지 |
$codegen.isSinglePkAndLongTypeAndNameIsId() | PK 가 1개이고 이름이 id, 중간 타입이 M_LONG 인지 — 표준 id 패턴 판별 |
$codegen.isPk($field.column) | 해당 컬럼($field.column)이 PK 인지 |
$codegen.getDeletedField() | deletedMark=true 인 필드 (없으면 null) |
$codegen.hasDeletedField() | deletedMark 필드 존재 여부 |
$codegen.getMetaAttribute(name, $field) | 필드의 META 속성에서 name 에 해당하는 value (없으면 빈 문자열) |
시퀀스 · 키 생성 SQL
| 함수 | 설명 |
|---|
$codegen.hasSequence() | $entity.sequenceName 이 비어있지 않은지 (팩 엔티티 변수로 선언한 경우) |
$codegen.getSelectKeyStatement() | DBMS 별 PK 값 조회 SQL — Oracle/PostgreSQL 은 시퀀스, MySQL/MariaDB/SQL Server 는 auto increment 기반 (MyBatis selectKey 용) |
$codegen.getSelectKeyOrder() | selectKey 실행 시점 — Oracle/PostgreSQL 은 before, 그 외 after |
Audit (생성/수정 추적 컬럼)
| 함수 | 설명 |
|---|
$codegen.hasAuditTable() | 프로젝트에 Audit Table 이 설정되어 있는지 |
$codegen.hasCreated() | 생성 author·date 컬럼이 모두 존재하는지 |
$codegen.hasModified() | 수정 author·date 컬럼이 모두 존재하는지 |
$codegen.isCreationAuthor(name) | 필드명이 생성자(author) 후보 목록에 있는지 |
$codegen.isCreationDate(name) | 필드명이 생성일시 후보 목록에 있는지 |
$codegen.isModificationAuthor(name) | 필드명이 수정자 후보 목록에 있는지 |
$codegen.isModificationDate(name) | 필드명이 수정일시 후보 목록에 있는지 |
$codegen.isCreationField(name) | 생성자 또는 생성일시 컬럼인지 |
$codegen.isModificationField(name) | 수정자 또는 수정일시 컬럼인지 |
$codegen.isAuditField(name) | 생성/수정 추적 컬럼 중 하나인지 |
$codegen.isAuditDateField(name) | 생성일시 또는 수정일시 컬럼인지 |
검증 키워드
| 함수 | 설명 |
|---|
$codegen.validationsEntity($entity) | 엔티티 전체 필드의 검증 키워드 목록 (중복 제거) |
$codegen.validationsField($field) | 필드의 검증 키워드 — NOT NULL 문자열 컬럼은 notblank, 그 외 NOT NULL 은 notnull, 길이 있는 문자열은 utf8size. PK·audit 필드는 제외 |