jak zapamiętywac historię w aplikacji

jak zapamiętywac historię w aplikacji
remigio
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Postów:357
0

Hej

Chciałem się zapytać jaki jest najlepszy sposób na przechowywanie zmian w bazie.
Coś na zasadzie historii zmian.

Chodzi o to że chciałem mieć zapisane wszystkie zmiany zachodzące w systemie żeby później mieć do nich dostęp....(np znać liczbę ile razy użytkownik zmienił hasło)

Mam dwa pomysły:

  1. dla każdej tabeli tworzyć równoważne tabele z końcówką np Hist czyli będziemy mieli dwie tabele user i userHist. W przypadku zmiany na encji stara encja będzie eksportowana do hist a zamiast niej pojawi się nowa ze świerzymi wartościami.
  2. nie tworzyć nowych tabel tylko dodać do wszystkich tabel wartość delete i po prodtu starą ustawiam na true - nową na false.

Może ktoś ma jeszcze inne ciekawsze pomysły..Chętnie posłucham.

Mam jeszcze małe pytanie odnośnie Hibernate i tego co napisałem powyżej.

Mianowicie gdy pobieram objekt z bazy za pomocą Hibernate to jest on zbindowany i każda ingerencja w niego spowoduje automatyczny update tego objektu.
czyli:

  • pobieram objekt z bazy
  • w aplikacji zmieniam pole tego objektu - objekt jest automatycznie zmieniony i zapisany

I tu mi sie pojawia problem bo jak będę próbował zapisac nowy objekt i stworzyć takie wpisy historyczne to przy zapisie nie mam już dostępu do tego starego objektu.
Jak wtedy się zaczowac...
Czy mam przy pobieraniu z bazy tworzyć kopię tego objektu czy może jest jakiś inny sposób..

Pozdrawiam

EDIT:

Logi aplikacji odpadaja

edytowany 1x, ostatnio: remigio
krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:1272
2

Mam dobre wieści. Taki mechanizm już jest i wystarczy go skonfigurować.

http://docs.jboss.org/envers/docs/

@Edit
W sensie mechanizm nr 1. Mechanizm nr 2 jest bez sensu.

edytowany 1x, ostatnio: krzysiek050
KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
1

nie chce mi się wszystkiego czytać, ale zależy jakie dane. wybiórczo np. tylko kilka kolumn z jakieś innej tabelki (np. odnotowywać zmiany środków na koncie) - możesz stworzyć osobną tabelkę. to też może być przydatne gdyby ktoś potem chciał mieć w widoku swoją historię. do rzeczy innych rzeczy możesz poczytać o hibernate envers


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.