Version 2, last updated by pipen at December 03, 2009 08:13 UTC

W ramach punktu: "Persystencja Hibernate: zapoznanie się z tematyką." z następnego deadline'u chciałbym zamieścic tutaj krótki tutorial o Hibernate w naszym projekcie. Mam nadzieję, że się uda :-)

Jak wszyscy wiemy Hibernate to narzedzie służące do wygodnego, obiektowego komunikowania się z bazą danych. Odpowiada za mapowanie relacyjnej bazy danych na obiekty Javowe POJO.

MAPOWANIE

Aby mapowanie było mozliwe można skorzystać z plików-deskrytptorów *.hbm.xml lub anotacji Javowych przy wykorzystaniu Hibernate Annotations. Załóżmy, że będziemy korzystać z plików HBM.

Przykładowy plik .hbm.xml

Jak widać explicite podaje on jaka kolumna jest mapowana na jaki typ danych i ew. jego wielkość.

Criteria API

Criteria API to wygodny i szybki sposób wykonywania nieskomplikowanych query do bazy danych. Przykład zastosowania poniżej. Link do API podany poniżej:

List cats = session.createCriteria(Cat.class)
.add( Restrictions.like("name", "Iz%") )
.add( Restrictions.gt( "weight", new Float(minWeight) ) )
.addOrder( Order.asc("age") )
.list();

Zakładając, że mamy w bazie kolumnę CATS i odpowiedni plik .hbm który wpisy z niej nam zmapuje do obiektu klasy Cat możemy stworzyć criteria i w nich definiowac które koty chcemy pobrać z bazy.Robimy dodając Restictions (odsyłam do API). Inne operacje też mają swoje odpowiedniki w criteria, np: addOrder, stMaxResult, setResultTransformer.

Prawie zawsze uzywa się list(), która zwraca po prostu javową listę obiektów z bazy spełniających wczesniej zdefiniowane

https://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.html

HQL i SQL

Hibernate pozwala używać inlinowychpoleceń SQL (choć jest to niewskazane) oraz udostępnią oiektowy jezyk HQL, podobny do tego z LINQ. Odsyłam do tutoriali i radzę ich uzywać wtedy kiedy Criteria to za mało.

LOG4J

Istnieje możliwość wyświetlenia w debugu poleceń SQLa jakie generuje Hibernate. W tym celu należy odkomentować odpowiednią linijkę w pliku log4j w uzywanym module.

 

Rozbudowa w miarę potrzeb...