package com.tddinaction.data.hibernate;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.tddinaction.data.PersonDao;
import com.tddinaction.data.person.Person;
public class HibernatePersonDao implements PersonDao {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@SuppressWarnings("unchecked")
public List<Person> findAll() {
Session session = sessionFactory.getCurrentSession();
String hql = "from Person p";
Query query = session.createQuery(hql);
List people = query.list();
return people;
}
@SuppressWarnings("unchecked")
public List<Person> findByLastname(String name) {
try {
Session session = sessionFactory.getCurrentSession();
String hql = "from Person p where p.lastname = :lastname";
Query query = session.createQuery(hql);
query.setParameter("lastname", name);
return query.list();
} catch (HibernateException e) {
throw new RuntimeException(e);
}
}
public void save(Person person) {
Session session = sessionFactory.getCurrentSession();
session.save(person);
session.flush();
}
public Person find(Long id) {
Session session = sessionFactory.getCurrentSession();
return (Person) session.get(Person.class, id);
}
}