日期:2014-05-17  浏览次数:20723 次

关于Hibernate Session得问题
以前用S2sh得时候,获得sessionfactory 得方式 都是通过 spring得配置文件中 声明 例如
<bean  name="userinfodao" class="com.java5.bank.m.db.daoimpl.UserinfoDAOImpl">
<property name="sessionFactory"  ref="sessionFactory"></property>
</bean>
然后 我再 该类中


public class UserinfoDAOImpl implements UserinfoDAO{

private SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
return sessionFactory;
}

public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
完成注入。

但是今天再网上看到帖子,说是 直接注入sessionfactory 需要继承hibernatedaosuppory类··,但是我一直没有继承过,也实现功能了···真心求教··
------解决方案--------------------
spring配置文件里对userinfodao的bean进行注入sessionFactory,只要你的dao继承hibernatedaosuppor,就不写用什么sessionFactory了,更不用写什么get和set方法
------解决方案--------------------
我觉得你的方法应该是将sessionfactory注入到dao里,然后通过这个sessionfactory得到事务session再进行数据库的操作。
而dao继承hibernatedaosuppor后通过getHibernateTemplate()直接就能获得session,上面的步骤都在hibernatedaosupport里完成了,你只要在spring配置文件里配置SessionFactory就行了。
代码如下:
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
public void save(Users transientInstance) {
log.debug("saving Users instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
}
}
………………
}
------解决方案--------------------
如果你继承了HibernateDaoSupport是不需要在自己的dao里面写private SessionFactory sessionFactory;的,在HibernateDaoSupport中已经帮你实例化了HibernateTemplate,你可以直接使用HibernateTemplate提供的一些模板。可以简化自己的dao操作。这种方法比自己写sessionFactory省事