Názor k článku JavaFX: Hibernate – ukládání nových záznamů, úvod do H2 databáze od Petr - Spousta lidí přede mnou už řekla, že přičítání...

  • Článek je starý, nové názory již nelze přidávat.
  • 5. 2. 2016 17:12

    Petr (neregistrovaný)

    Spousta lidí přede mnou už řekla, že přičítání +1 k ID v kódu je špatně, ale už neřekla proč:

    Takže: hlavní důvod je ten, že pokud si klienta otevřou dva uživatelé a oba kliknout na "Nový záznam", tak oba dva dostanou stejné ID.
    Proč? Ani jeden z nich totiž ještě neklikl na "Uložit", takže data v tabulce se nezměnila.
    Tímpádem oba zjistí stejné poslední ID, oba udělají +1, a oboum vyjde stejný výsledek.

    Pro toho, kdo klikne jako první na "Uložit", to bude fungovat a záznam se úspěšně založí. Ten, který klikne na "Uložit" jako druhý, dostane chybu z databáze, protože se nedá provést INSERT s již existujícím ID.

    Řešení je několik (Hibernate jich podporuje hned několik) - z těch jednodušších:
    - další číslo si nechat generovat databází (pokud má tu featuru)
    - jako ID používat UUID, které se vygeneruje vždy jedinečné