主题: 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 Java怎样通过网络中传输多个文件 想用JAVA 做个电影网站..高手指教 TOMCAT中FALSH和图片显示不了??? jsoup网页抓取 ibatis怎么调用oracle的存储过程,得到返回值? 配置好tomcat连接池后,在.jsp页面中可以方便得到连接,在structs中如何得到连接呢? Hibernate 的问题? 高分求struts中文乱码解决,多国语言显示问题(100) kenli(致虚子) 元旦快乐,送你份小小的礼物啦^_^ !!急问一个数据库的问题,请高手指教。 用POI生成EXCEL时,EXCEL表可以正确生成,可是会抛出异常!求救! Spring中value和ref的区别?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货