-
Jmix 실전 마스터 시리즈 3화 – 도메인 모델링과 Entity 설계 실무 적용 가이드언어 및 프레임워크/Jmix 2025. 5. 9. 16:03728x90
Jmix에서 도메인 모델을 설계하는 방법은 단순한 클래스 정의를 넘는다. GUI 기반 모델러와 Java 코드가 동기화되는 구조 속에서 효율적인 Entity 설계 전략을 소개한다.
왜 Entity 설계가 Jmix 개발의 핵심인가?
Jmix는 Spring Boot 기반임에도 불구하고, Entity를 GUI로 정의하고 자동으로 화면과 스키마를 생성할 수 있는 플랫폼이다.
즉, Jmix에서는 ‘도메인 모델 = UI + DB 구조 + 권한 정책의 중심’이 된다.
따라서 모델 설계는 전체 개발 생산성과 유지보수에 직접적인 영향을 준다.
도메인 모델 설계 준비 – Jmix Studio에서 Entity 만들기
① IntelliJ 우측 Jmix 탭에서 Entities 선택
→ + New Entity 클릭
② Entity 정보 입력
- Class Name: Employee
- Package: com.company.demo.entity
- Table Name: EMPLOYEE (자동 지정되지만 수정 가능)
③ 기본 필드 추가
필드 이름 타입 주석
fullName String 직원 이름 birthDate LocalDate 생년월일 email String 이메일 department Association → Department 소속 부서 💡 실무 팁
Jmix는 자동으로 ID 필드를 UUID로 생성하며, Audit 필드(작성자, 작성일자 등)도 옵션으로 포함시킬 수 있다.
기업용 시스템에선 이 기능을 적극 활용해야 감사 로그와 연동이 용이하다.
Composition vs Association 차이
✔ Association
- N:1 또는 1:N 관계에서 독립 객체 참조
- 예시: Employee → Department
- DB에서 외래 키(FK) 관계로 연결
✔ Composition
- 객체가 종속 관계일 때 사용
- 예시: Invoice → InvoiceLine
(인보이스가 삭제되면 라인도 함께 삭제)
💡 실무 기준:
- 독립된 CRUD 화면이 필요한 경우: Association
- 부모 화면에서 하위 객체를 관리할 경우: Composition
⚙ Jmix Entity의 핵심 구성요소
@JmixEntity @Table(name = "EMPLOYEE") @Entity(name = "demo_Employee") public class Employee { @JmixGeneratedValue @Id @Column(name = "ID", nullable = false) private UUID id; @Column(name = "FULL_NAME") private String fullName; @Column(name = "BIRTH_DATE") private LocalDate birthDate; @InstanceName public String getInstanceName() { return fullName; } }
- @JmixEntity: Jmix에서 Entity로 인식
- @JmixGeneratedValue: UUID 자동 생성
- @InstanceName: UI에서 라벨로 표시되는 필드 설정
실무 시나리오 예시 – 인사관리 시스템
모델 구조 예시
- Employee – 직원 정보
- Department – 부서
- Position – 직책
- LeaveRequest – 휴가 신청
- LeaveType – 휴가 종류
Mermaid로 모델 관계 시각화:
classDiagram class Employee { UUID id String fullName LocalDate birthDate String email Department department } class Department { UUID id String name } Employee --> Department
이 구조로 도메인 모델을 설계하면, 이후 화면은 거의 자동 생성만으로 업무 시스템이 구성된다.
저장 후 UI 화면 자동 생성
Entity 저장 후, Screens 탭에서 해당 Entity를 선택 → Generate Screens
- Browse Screen: 테이블 리스트, 검색 필터 포함
- Editor Screen: 등록/수정 화면
화면까지 자동으로 구성되는 이 점은 Jmix만의 초고속 개발 특화 기능이다.
DB 동기화 – Liquibase 기반 마이그레이션
Entity를 만들면 Jmix는 자동으로 *.xml 형태의 Liquibase 파일을 생성한다.
애플리케이션 실행 시, 이 파일 기반으로 DB 테이블이 자동 생성되거나 업데이트된다.파일 위치:
/src/main/resources/liquibase/changelog/xxxx-changelog.xml
💡 실무 팁
DB는 직접 만지지 않고, Entity → Liquibase → DB 흐름을 지키는 것이 유지보수에 유리하다.
마무리 – 모델이 곧 시스템의 중심이다
Jmix에서 도메인 모델 설계는 단순한 스키마 정의가 아니다.
UI, DB, 권한, API까지 모두 이 모델을 기반으로 생성되기 때문에, 초기 설계의 정합성과 구조적 판단이 전체 품질을 좌우한다.
다음 글 예고
Jmix 실전 마스터 시리즈 4화 – CRUD UI 자동 생성과 화면 커스터마이징 전략
728x90'언어 및 프레임워크 > Jmix' 카테고리의 다른 글
Jmix 실전 마스터 시리즈 1화 - Jmix란 무엇인가? CUBA의 진화, Spring Boot의 확장 (0) 2025.05.07