Jak sprawdzić co się zmieniło w aktualizowanej encji

0

Robię update encji, powiedzmy że mam dane które przychodzą z forma (updatedData) i dane które juz są w bazie (currentData). Jak teraz sprawdzić które dane się zmieniły ale nie sprawdzając/porównując po kolei wszystkich pól bo jest ich dość dużo - czy w ogóle istnieje taka jakaś magiczna metoda na to?

0

Zainteresuj się Hibernate Envers.

2

Formularz (frontend) może oznaczyć to jakoś w DTO. Unikaj integracji bezpośrednio poprzez gole encje.

0

Jak poszukasz java object diff to znajdziesz trochę bibliotek do tego, ale mam wątpliwości czy to dobra metoda.

0

Jak teraz sprawdzić które dane się zmieniły ale nie sprawdzając/porównując po kolei wszystkich pól bo jest ich dość dużo - czy w ogóle istnieje taka jakaś magiczna metoda na to?

IMO powinien zajmować się tym front - jesteś wtedy zabezpieczony przed sytuacją w stylu:

- użytkownik A otwiera formularz
- użytkownik B otwiera formularz
- użytkownik A wprowadza zmiany i zapisuje formularz
- użytkownik B wprowadza zmiany i zapisuje formularz... nadpisując poprzednie zmiany
0

Pytanie, jaki problem chcesz rozwiązać? Najprawdopodobniej nie potrzebujesz takiego sprawdzenia.

Co do propozycji przerzucenia tego na front, to jest ona o tyle dobra, że stosunkowo prosta (hasło Google dirty form), ale całkowicie pozbawiona racji bytu w przypadku, gdy zależy ci na bezpieczeństwie danych wejściowych.

0

Poczytaj o optimistic locking i pesimistic locking

1

Wydaje mi się, że sprawdzanie "czy dane się zmieniły", to jakaś porażka projektowa. Powinieneś myśleć w kategoriach wykonywanych operacji, których efektem jest modyfikacja danych.
(np. zgłoś szkodę, zmień adres, utwórz zamówienie, potwierdź zamówienie, wyślij potwierdzenie, dodaj zdjęcie, dodaj komentarz etc.).

Zakładam, że jak masz jakieś dane, tzn. że jakaś aktywność się zakończyła (dane skądś się wzięły), ale pewnie nie wiesz jaka to była aktywność i próbujesz zrozumieć co się wydarzyło, analizując stan przed i po. Im więcej ścieżek zmian, tym taka logika będzie bardziej złożona. Jeśli źle rozumuję, to po co chcesz określać co uległo zmianie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1