Как моделировать и сохранять объекты, состояние которых меняется со временемJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как моделировать и сохранять объекты, состояние которых меняется со временем

Сообщение Anonymous »

Я разрабатываю модель предметной области, в которой некоторые объекты со временем развиваются, и мне нужно вести исторический учет их состояния, который можно получить позже.
Упрощенный пример:
Кредитная линия представляет собой долгосрочный контракт финансирования.
Каждая кредитная линия имеет связанные сущности, такие как Финансовые организации, которые участвуют в кредитной линии.
Состояние кредитной линии на заданную дату представлено Заявлением, которое включает в себя его условия, участвующие организации и их вклады (все это может меняться со временем).
Заявления периодически загружаются из файлов, и приложение должно позволять пользователям просматривать состояние кредитной линии на любую дату.
Я не могу использовать темпоральные таблицы SQL, поскольку дата выписки берется из загруженного файла, а не из изменения базы данных. время.
Я не знаю, как лучше всего смоделировать и сохранить эти зависящие от времени объекты. Возможные подходы:
Вариант A — сохранять только снимки
Сохранять только «CreditLineSnapshot» (выписки).
Каждый снимок содержит все атрибуты кредитной линии на определенную дату. Никакие данные не повторяются.
Недостатки:
- Нет постоянной сущности `CreditLine`: необходимо группировать снимки по идентификатору, например, чтобы получить список кредитных линий.
- Все отношения с другими объектами дублируются в каждом снимке, например, с владельцем кредитной линии, даже если они не меняются с течением времени.
Вариант B — постоянные сущности и Снимки
Сохраняются как CreditLine, так и ее отчет (который содержит снимок CreditLine).
Недостатки:
- Атрибуты и дублирование данных: текущее состояние существует как в объекте, так и в его последнем операторе (поскольку все отчеты должны быть сохранены)
Вариант C — Сохранение объектов со стабильными атрибутами + снимки с переменными data
Сохраняйте `CreditLine` только со стабильными атрибутами (например, Id) и сохраняйте все переменные данные в его `Statements`.
Credit Line содержит все методы, кроме атрибута ID и его операторов. Он делегирует полномочия в соответствующем операторе, чтобы получить остальные данные и выполнить все расчеты.
Это мой любимый вариант.
Какова лучшая стратегия моделирования или общепринятая практика для такого рода областей, где состояние объектов меняется с течением времени, но при этом необходимо сохранять исторические версии?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -over-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»