主题: HibernateCallback的疑问 不知道为什么这样写,一般用回调是为了实现如分页等直接用hibernatetemplate不能实现的时候 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的意思是,就算是分页,都是需要Query,倒不如直接用Query q = this.getSession().createQuery(sql); 这样就不必用HibernateCallback()了.但是我看很多人都放弃捷径不走,情愿用HibernateCallback,我就想知道这个原因是什么? 你当然可以直接使用Query。但是问题是HibernateTemplate提供了相当多有用的辅助功能。我们想用它提供的辅助功能。但是HibernateTemplate包装了Hibernate的代码,使用了它以后不能直接访问到Session了,也就是说,我们无法通过Session对象得到Query了。所以,这种情况下我们当然无法直接用Query来查询了。HibernateTemplate提供这个HibernateCallback,就是为了满足这种使用了HibernateTemplate的情况下,仍然需要直接访问Session的需求而来的。它提供了在HibernateTemplate里面直接访问Session的能力。这个就是我们要使用HibernateCallback的原因。最后提醒一下楼主,HibernateCallback是一个对象,而不是一个方法... 我看了一下楼主的代码,好像你的代码既能得到HibernateTemplate,也能得到Session(this.getSession)。我个人认为这种代码一定有隐患。至少,在代码风格上是不好的。 我们使用HibernateTemplate,有一个很重要的原因就在于我们不想直接控制事务,不想直接去获取,打开Session,开始一个事务,处理异常,提交一个事务,最后关闭一个Session。我们自己只专注于业务,不想去作这些重复而繁琐的操作。我们把这些责任全部委托给了HibernateTemplate,然后使用声明式的配置来实现这样的功能。如果我们通过类似getSession()这样的方法获得了Session,那就意味着我们放弃了上面所说的一切好处。所以,如果楼主的业务类如果在使用HibernateTemplate的同时,又可以直接得到Session(而不是通过HibernateCallback),那么我敢说楼主的代码一定有bug sql问题求解答 JSP直接生成word Hibernate里什么时候用session.beginTransaction();呢? 请教高手,一个关于hql查询日期格jsp显示格式化日期的问题。 servlet运行问题!!! HttpServletRequest高级问题 spring3 注解事务未起作用,研究好好久没研究出来,求助。 javabeans的问题 srping为什么获取不到sessionFactory 如何将一个XML文档中的一个结点插入到另一个XML文档中? 用POI生成EXCEL时,EXCEL表可以正确生成,可是会抛出异常!求救! Spring中value和ref的区别?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货