//<start id="java_contextualHibernateDao"/> package com.john.springinaction.persistence; import com.john.springinaction.domain.Spitter; import com.john.springinaction.domain.Spittle; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.classic.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.Collection; import java.util.List; @Repository("spitterDao") public class HibernateSpitterDao implements SpitterDao { private SessionFactory sessionFactory; @Autowired public HibernateSpitterDao(SessionFactory sessionFactory) {//<co id="co_injectSessionFactory"/> this.sessionFactory = sessionFactory; } private Session currentSession() { return sessionFactory.getCurrentSession();//<co id="co_getCurrentSession"/> } public void addSpitter(Spitter spitter) { currentSession().save(spitter);//<co id="co_useSession"/> } public Spitter getSpitterById(long id) { return (Spitter) currentSession().get(Spitter.class, id);//<co id="co_useSession"/> } public void saveSpitter(Spitter spitter) { currentSession().update(spitter);//<co id="co_useSession"/> } //<end id="java_contextualHibernateDao"/> public List<Spittle> getRecentSpittle() { Session session = currentSession(); Query query = session.createQuery("FROM Spittle"); final Collection<Spittle> retrievedSpittles = query.list(); List<Spittle> spittlesList = new ArrayList<Spittle>(retrievedSpittles); // return currentSession().f loadAll(Spittle.class); // this isn't right...just a placeholder for now return spittlesList; } public void saveSpittle(Spittle spittle) { currentSession().save(spittle); } public List<Spittle> getSpittlesForSpitter( Spitter spitter) { Session session = currentSession(); Query query = session.createQuery("FROM Spittle WHERE spitter_id = :spitter_id"); query.setParameter("spitter_id", spitter.getId()); List<Spittle> spittlesList = query.list(); return spittlesList; } public Spitter getSpitterByUsername(String username) { Session session = currentSession(); Query query = session.createQuery("FROM Spitter WHERE username = :username"); query.setParameter("username", username); Spitter spitter = (Spitter) query.uniqueResult(); return spitter; } public void deleteSpittle(long id) { currentSession().delete(getSpittleById(id)); } public Spittle getSpittleById(long id) { return (Spittle) currentSession().get(Spittle.class, id); } public List<Spitter> findAllSpitters() { // TODO Auto-generated method stub return null; } }