Sledování historie změn není nijak výjimečný požadavek, a proto mě i celkem překvapuje, že na tomto poli nejsou (nebo jsem nenašel) skoro žádné open-source projekty, které by toto řešily. Jeden jsem však našel a jmenuje se JBoss Envers.
Nemá cenu opisovat, to co je uvedeno na webu projektu, jen bych zase uvedl pár poznámek.
Envers potřebuje pro svoji práci Hibernate a Hibernate Entity Manager.
Nyní se projekt nachází ve verzi 1.0.0.Beta2 - kromě verzování atributů entit zvládá základní vazby typu @OneToOne, @OneToMany a @ManyToOne. Zatím neumí (mělo by být ve verzi 1.1.0) takové vazby, kde je automaticky vytvořena vazební tabulka (join table), tedy např. @ManyToMany, ale mohou to být třeba i vazby @OneToMany. Do jisté míry to lze obejít tak, že si vytvořím vlastní vazební entitu a tím pak budu mít pouze vazby @OneToMany nebo @ManyToOne.
Velice příjemné je, že lze vytvořit ANT task, který umí generovat datové schéma včetně tabulek pro verzování a pro evidenci revizí.
Další zdroje:
- článek Ukládání historie změn v relačních databázích
- odkaz na prezentaci z The Spring Experience 2007
- příspěvek od Martina Fowlera
2 komentáře:
Vypadá to zajímavě, ale k čemu to vlastně potřebuješ? Nějak si nedokážu představit konkrétní use case.
Protože potřebuji znát historii změn, mít možnost vrátit se zpátky v čase atd.
Myslím, že vše je pěkně popsané v článku na Intervalu.
Okomentovat