Raz som pouzil podobne riesenie. Boli tam tri tabulky. V prvej bol cas, id
uzivatela, class, cislo verzie, id objektu a informácia či sa jedná o update
alebo delete. V druhej bola kolekcia properties a nové hodnoty k danej
verzii objektu. V tretej tabulke sa zaznamenávali zmeny v kolekciách.
Je to ale dosť náročné riešenie a neskôr sme to urobili ďaleko jednoduchšie:
pri každej zmene sme cez Xstream zapísali objekt ako XML do jednej tabuľky.
Dobrý den,
>
>
>
> chtěl bych se zeptat jak byste řešili následující problém. Mám v aplikaci
> nějaké entity a potřebuji generovat historii všech změn.
>
> např
>
>
>
> class User {
>
> private String name;
>
> private String password;
>
> ...
>
> }
>
>
>
> načtu uživatele z db změním jméno a znova uložím, pak potřebuju mít někde
> záznam o tom že jsem pole name změnil z hodnoty x na y v nějaký čas.
>
> Napadlo mě.
>
>
>
> class GlobalHistory{
>
> private String oldValue;
>
> private String newValue;
>
> private String field;
>
> }
>
>
>
> class GlobalHistoryBundle{
>
> private String classType;
>
> private Set<GlobalHistory> fields;
>
> }
>
>
>
> při na každý update v dao pak dát aspekt, který nejprve načte z db původní
> entitu, porovná s tím co chci uložit a vygeneruji GlobalHistory a
> GlobalHistoryBundle. Po úspěšném uložení entity uložím i tuto historii.
>
>
>
> Používám technologie hibernate a spring.
>
> Vidíte nějaké slabiny, případně máte jiný osvědčený způsob?
>
>
>
> Martin Chalupa
>