Создаем классы доменных объектов

Доменным объектом будем называть тот состояние которого будет храниться в базе данных.

Для описания классов доменных объектов будем использовать JPA (Java Persistense API)

Нашему приложению понадобиться 2 класса доменных объектов и 1 перечисляемый тип:

  • budget.domain.MoneyOperation - экземпляры данного класса будут хранить все денежные операции
  • budget.domain.MoneyOperation - экземпляры класса будут хранить статью денежной операции
  • budget.domain.OperationType - перечисляемый тип определяющий тип операции (дебетовая или кредитовая)

Создавать классы начнем в обратном порядке. Но сначала создадим пакет.

Создаем пакет

Создадим пакет в котором будут храниться классы доменных объектов

Создаем перечисляемый тип OperationType

Перечисляемый тип budget.domain.OperationType определяет тип денежной статьи. Денежная статья может быть двух типов: дебетовая (уменьшение бюджета, например, покупка чего-нибудь), кредитовая (увеличение бюджета, например, получение зароботной платы).

Для создания перечисляемого типа сделайте следующее. В ветке Source Packages выделите пакет budget.domain и нажмите Ctrl+N или в меню File выберите пункт меню New File. Далее в качестве категории выбираете Java classes а в качестве типа файла Java Enum

Далее в качестве Class name задаете OperationType

Создаем класс OperationItem

Экземпляры класса budget.domain.OperationItem будут хранить название и тип денежной статьи.

Класс OperationItem является обычным POJO в котором присутствуют аннотации JPA и WEDA. На аннотации WEDA обратим более пристальное внимание.

Description - позволяет "прицепить" дополнительные атрибуты к свойству:

  • displayName - название свойства, которое будет появляться в заголовках таблицы или в качестве названия поля при редактировании значения свойства
  • pattern - определяет шаблон который будет использован для преобразования значения свойства в строку и наооборот.

Constraints - позволяет задать список ограничений которым должно соответствовать значение свойства.

ConstraintId - задает ограничение по его идентификатору.

Подробнее об ограничениях можно прочитать в руководстве пользователя в разделе Ограничения

Для создания класса сделайте те же шаги что и при создания перечисляемого типа. Только в качестве типа файла выберите Java Class а в качестве Class name задайте OperationItem

Создаем класс доменного объекта MoneyOperation

Экземпляры класса budget.domain.MoneyOperation будут фиксировать все денежные операции.

Ничего нового по сравнению с классом OperationItem не появилось. Кроме интересного ограничения с идентфикатором денежная-операция. Но сейчас это ограничение мы рассматривать не будем. Вернемся к нему после создания источников объектов.