Я использую Hibernate с Vaadin.У моего основного класса приложений есть метод фабрики сеансов:
public Session getSession() {
Session currentSession = HibernateUtil.getSessionFactory()
.getCurrentSession();
if(!currentSession.getTransaction().isActive()) {
currentSession.beginTransaction();
}
return currentSession;
}
Каждый класс, которому нужно что-то сохранить, будет использовать ссылку на основное приложение, а затем захватывать сеанс.
Тогда у меня есть службаслой, который использует именованные запросы HQL, затем возвращает эти данные в виде списков.
public List<DataClass> getEntriesforDate(Date date, Integer key) {
return mainApp.getSession().getNamedQuery(DataClass.NAMEDQUERY)
.setParameter("key", key).list();
}
Для сохранения вам просто сопоставляют класс ORM с таблицей, вы заполняете экземпляр этого класса, а затем используете слияние для сохранения объекта:
getSession().merge(o);
Вот подробное объяснение из Вадина Вадина:
Спящий с Ваадином