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...