Доменным объектом будем называть тот состояние которого будет храниться в базе данных.
Для описания классов доменных объектов будем использовать JPA (Java Persistense API)
Нашему приложению понадобиться 2 класса доменных объектов и 1 перечисляемый тип:
budget.domain.MoneyOperation
- экземпляры данного
класса будут хранить все денежные операции
budget.domain.MoneyOperation
- экземпляры класса
будут хранить статью денежной операции
budget.domain.OperationType
- перечисляемый тип
определяющий тип операции (дебетовая или кредитовая)
Создавать классы начнем в обратном порядке. Но сначала создадим пакет.
Перечисляемый тип budget.domain.OperationType определяет тип денежной статьи. Денежная статья может быть двух типов: дебетовая (уменьшение бюджета, например, покупка чего-нибудь), кредитовая (увеличение бюджета, например, получение зароботной платы).
Для создания перечисляемого типа сделайте следующее.
В ветке Source Packages
выделите пакет
budget.domain
и нажмите Ctrl+N или в меню File
выберите пункт меню New File
. Далее в качестве категории
выбираете Java classes
а в качестве типа файла Java Enum
Далее в качестве Class name
задаете OperationType
Экземпляры класса budget.domain.OperationItem будут хранить название и тип денежной статьи.
Класс OperationItem
является обычным POJO в котором присутствуют
аннотации JPA и WEDA. На аннотации WEDA обратим более пристальное внимание.
Description - позволяет "прицепить" дополнительные атрибуты к свойству:
displayName
- название свойства, которое будет появляться
в заголовках таблицы или в качестве названия поля при редактировании
значения свойства
pattern
- определяет шаблон который будет использован
для преобразования значения свойства в строку и наооборот.
Constraints - позволяет задать список ограничений которым должно соответствовать значение свойства.
ConstraintId - задает ограничение по его идентификатору.
Подробнее об ограничениях можно прочитать в руководстве пользователя в разделе Ограничения
Для создания класса сделайте те же шаги что и при создания перечисляемого
типа. Только в качестве типа файла выберите Java Class
а в качестве Class name
задайте OperationItem
Экземпляры класса budget.domain.MoneyOperation будут фиксировать все денежные операции.
Ничего нового по сравнению с классом OperationItem
не появилось.
Кроме интересного ограничения с идентфикатором денежная-операция.
Но сейчас это ограничение мы рассматривать не будем. Вернемся к нему после
создания источников объектов.