Hibernate

Przykłady z wykorzystaniem Hibernate. Dzięki tej bibliotece korzystanie ze strukturalnych baz danych takich jak np. MySQL w technologii JavaSE / JavaEE staje się proste i przyjemne. Mechanizm pozwala programiście zapomnieć o strukturze w bazach danych (relacjach, kluczach itp.). Większość składowych kontenera jest wykonywana z poziomu kodu a Hibrenate automatycznie aktualizuję bazę. Chociaż korzystanie z tej biblioteki wymaga poznania dość obszernego API to jest to bardzo opłacalne ponieważ znacznie upraszcza dostęp do danych.

Załóżmy, że uzyskujemy dostęp do sesji za pomocą funkcji getHibernateSession(). W następnym kroku utworzone zostaje kryterium criteria.

Session session = getHibernateSession();
Criteria criteria = session.createCriteria(MyEnity.class);

Wyszukiwanie w bazie – warunki

// pole równe wartości, SQL: where `nazwa_kolumny` = 'wartości'
criteria.add(Restrictions.eq("nazwa_kolumny", "wartość")); 

// pole różne od wartości, SQL: where `nazwa_kolumny` != 'wartości'
criteria.add(Restrictions.ne("nazwa_kolumny", "wartość")); 

// pole większe lub równe wartości, SQL: where `nazwa_kolumny` >= 'wartości'
criteria.add(Restrictions.ge("nazwa_kolumny", "wartość")); 

// pole większe od wartości, SQL: where `nazwa_kolumny` > 'wartości'
criteria.add(Restrictions.gt("nazwa_kolumny", "wartość")); 

// pole mniejsze lub równe wartości, SQL: where `nazwa_kolumny` <= 'wartości'
criteria.add(Restrictions.le("nazwa_kolumny", "wartość")); 

// pole mniejsze od wartości, SQL: where `nazwa_kolumny` < 'wartości'
criteria.add(Restrictions.lt("nazwa_kolumny", "wartość")); 

Sortowanie

// rosnąco
criteria.addOrder(Order.asc("nazwa_kolumny"));
// malejąco
criteria.addOrder(Order.desc("nazwa_kolumny"));

Pobieranie danych z bazy

java.util.List <MyEnity> l = criteria.list();

SQLQuery – Zapytanie SQL oraz mapowanie

// tworzenie zapytania
SQLQuery q = session.createSQLQuery("SELECT id, name from TEST_ENTITY");

// wynik w polach będzie przełożony na odpowiedni typ
q.addScalar("id", StandardBasicTypes.LONG);
q.addScalar("name", StandardBasicTypes.STRING);

// mapowanie obiekt na typ TestEntity
q.setResultTransformer(Transformers.aliasToBean(TestEntity.class));

// pobieranie danych
java.util.List  l = q.list();