package org.skyscreamer.yoga.demo.dao;
import java.util.List;
import javax.inject.Inject;
import org.hibernate.Hibernate;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
@Transactional
public class GenericDaoBean implements GenericDao
{
@Inject
HibernateTemplate hibernateTemplate;
@Override
public <T> T find( Class<T> type, long id )
{
T entity = hibernateTemplate.load( type, id );
// Force exception if not found (Hibernate 3 defaults to lazy load.)
Hibernate.getClass( entity );
return entity;
}
@SuppressWarnings("unchecked")
@Override
public <T> List<T> findAll( Class<T> type )
{
return hibernateTemplate.find( "from " + type.getName() );
}
@Override
public Number getCount(Class<?> type)
{
return (Number) hibernateTemplate.find(" select count(*) from " + type.getName()).get(0);
}
}