hibernate

Jak vytvořit java web aplikaci s podporou Spring a JPA

Posted by Martin on September 08, 2010
hibernate, j2ee, java, maven, spring / 8 Comments

Nedávno se kolega ptal na to jak vytvořit a nakonfigurovat jednoduchou aplikaci využívající Spring IoC a JPA. Aplikace má sloužit jako platforma pro jednoduché testování a jedinou úlohou bylo ukládání a čtení několika málo entit. Potřeboval přidávat nové třídy do business logiky, psát testy a výstup na web.
Continue reading…

Tags: , , , , ,

Implementace audit info pomocí Spring AOP

Posted by Martin on July 28, 2009
java, spring / 5 Comments

V každém projektu se snažím přidávat do entit uložených v databázi alespoň informaci o tom kdo a kdy daný objekt vložil do databáze. Specifikace to často nezmiňuje vyjma případů, kdy entita nevyžaduje nějaký sofistikovanější způsob sledování historie změn. Ze zkušenosti se mi však již několikrát vyplatilo jednoduchou audit informaci v databázi mít.

Řešení by mělo splňovat několik požadavků:

  1. Nemělo by žádným způsobem přidávat práci programátorovi řešícímu business logiku. Tedy vyloučeno je explicitní volání metod, nastavování atributů objektu atd. Z tohoto pohledu by mělo být vše naprosto transparentní.
  2. Přidaná informace musí obsahovat informace o autorovi záznamu. Pro portálovou webovou aplikaci se může například jednat o přihlášeného uživatele. V případě volání stejné logiky ze skriptu dávkově by se pak mohlo jednat o login name uživatele na linuxovém serveru atd. Z toho důvodu odpadá řešení pomocí stored procedure na databázovém serveru. Respektive jsem nepřišel na žádné univerzální a jednoduché řešení. Pokud o něčem víte pak neváhejte komentovat. Rád se něčemu přiučím.

Jaké jsou tedy možnosti? Pokud je projekt řešen v Javě a jako ORM je použilo Hibernate pak se přímo nabízí použití implementace rozhraní org.hibernate.Interceptor (javadoc). Pro poslední dva projekty, kterých jsem se účastnil bylo toto řešení uspokojivě použito a slouží dobře. Má však z mého úhlu pohledu několik nevýhod.
Continue reading…

Tags: , , ,