spring管理的DAO

getHibernateTemplate()

 

如果dao继承HibernateDaoSupport,一定要用getHibernateTemplate(),不要使用getSession(),因为getSession()会得到原始的session,session的关闭以及事务完全不受spring控制了,我想既然是整合还是由spring来控制session会比较好,有些方法getHibernateTemplate()里面没有非要用session怎么办,方法如下:

 

public int queryByUserCount(final Users user) {
  log.debug("finding Users count instance by example");
  try {
   int result = (Integer) getHibernateTemplate().execute(
     new HibernateCallback() {
      public Object doInHibernate(Session arg0)
        throws HibernateException, SQLException {
       Example example = Example.create(user)
         .excludeZeroes().ignoreCase().enableLike(); // use
                    // like
                    // for
                    // string
                    // comparisons
       Criteria crit = arg0.createCriteria(Users.class)
         .add(example).addOrder(Order.asc("userid"));
       int totalPage = ((Number) crit.setProjection(
         Projections.rowCount()).uniqueResult())
         .intValue();

       return totalPage;
      }
     });
   return result;
  } catch (RuntimeException re) {
   log.error("find by example failed", re);
   throw re;
  }
 }

posted @ 2015-03-06 14:57  letmedown  阅读(117)  评论(0)    收藏  举报