Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Отслеживание изменения состояния (статуса) объекта


Автор: Eric_Cartman 28.9.2009, 14:03
Вообще то вопрос к java имеет отношение такое же, как банан к помидору, и задается скорее вследствии понедельниковской тупки и нежелания думать самостоятельно, но тем не менее... =)
 
Есть некий объект класса, у которого есть состояние (статус, переменная типа Enum). Объкет вообще говоря является persistence (отображение при помощи jpa+hibernate). На протяжении жизненного цикла у объекта меняется его состояние, причем измениний может быть не бесконечное число (вообще говоря изменения ограничены не количеством, а возможностью переходить из одного состояния в другое, + есть конечные состояния, из которых переход невозможен). 

В общем то сам вопрос заключается в том, как наиболее грамотно отслеживать\хранить историю изменений состояния подобного объекта? 
Пока в голову пришло довольно очевидное решение (опять же, никак не связанное с java): навесить триггер на изменения соответсвующего поля (статуса) в БД (ну и писать изменения в отдельную таблицу, опять же средствами БД).
Ну еще есть вариант interceptor сосздать в терминах hibernate, или подцепить @EntityListeners.
Проблема в том, что я подобную задачу решаю первый раз и хотелось бы выбрать оптимальный вариант.

Может кто более красивые варианты знает? Или помогите выбрать из предложенных.

Автор: Eric_Cartman 28.9.2009, 15:05
Походу дела появился еще один вопрос, более конкретный.

Как при помощи JPA отследить что в объете (скажем, при апдейте) изменилось именно _это_ поле?

Автор: Evgeni68 28.9.2009, 21:42
Посмотрите интересный проект http://jboss.org/envers/.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)