package dao.impl; import dao.BlogDao; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import pojo.Blog; import java.io.Serializable; import java.sql.SQLException; import java.util.List; /** * User: yumingzhe * Date: 5/24/12 * Time: 11:26 AM */ public class BlogDaoImpl implements BlogDao { private HibernateTemplate template; private SessionFactory factory; public HibernateTemplate getTemplate() { if (template == null) { template = new HibernateTemplate(this.factory); } return template; } public void setTemplate(HibernateTemplate template) { this.template = template; } public SessionFactory getFactory() { return factory; } public void setFactory(SessionFactory factory) { this.factory = factory; } @Override public Serializable saveBlog(Blog blog) { return this.getTemplate().save(blog); } @Override public Blog getBlogById(final int id) { return (Blog) this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Blog as b where b.id= :id").setInteger("id", id); return query.list(); } }).get(0); } @Override public List getAllBlogsByUID(final int uid) { return this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Blog as b where b.siteUser.id= :uid").setInteger("uid", uid); return query.list(); } }); } @Override public void updateBlog(Blog blog) { this.getTemplate().saveOrUpdate(blog); } @Override public void deleteBlogById(final int id) { this.getTemplate().execute(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Blog blog = (Blog) session.get(Blog.class, id); session.delete(blog); return null; } }); } @Override public List searchBlogByTag(final String tag) { return this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Blog as b where b.tag= :tag").setString("tag", tag); return query.list(); } }); } @Override public void deleteBlogById(final String id) { this.getTemplate().execute(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery("delete from researchzilla_blogs where id=" + id); return query.executeUpdate(); } }); } }