package org.laughingpanda.ejb_migration_example; import java.util.List; import org.hibernate.SessionFactory; import org.hibernate.classic.Session; import org.laughingpanda.ejb_migration_example.ejb.PersonBean; import org.springframework.transaction.annotation.Transactional; /** * @author Timo Rantalaiho */ @Transactional public class PersonHibernateDao implements PersonDao { private final SessionFactory sessionFactory; public PersonHibernateDao(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public Person create(String userName, String firstName, String lastName) { Person person = new PersonBean(); person.setUserName(userName); person.setFirstName(firstName); person.setLastName(lastName); Session session = getSession(); Long id = (Long) session.save(person); return findByPrimaryKey(id); } public void remove(Person person) { getSession().delete(person); } public Person findByPrimaryKey(Long key) { return (Person) getSession().get(PersonBean.class, key); } public List findPersons(SearchParameters searchParameters) { String termWithWildcard = searchParameters.getSearchTerm() + "%"; return findBySearchTerm(termWithWildcard); } private List findBySearchTerm(String searchTerm) { return getSession().createQuery("from PersonBean person " + "where userName like ? or firstName like ? or lastName like ?") .setString(0, searchTerm).setString(1, searchTerm).setString(2, searchTerm) .list(); } private Session getSession() { return sessionFactory.getCurrentSession(); } }