以前用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类··,但是我一直没有继承过,也实现功能了···真心求教··

解决方案 »

  1.   

    一般是都继承了hibernatedaosuppory类;这样你可以调用它提供的方法来操作数据库;当然你不用它提供的方法用其他的也是可以的;这个我个人的理解。
      

  2.   

    spring配置文件里对userinfodao的bean进行注入sessionFactory,只要你的dao继承hibernatedaosuppor,就不写用什么sessionFactory了,更不用写什么get和set方法
      

  3.   

    我觉得你的方法应该是将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);
    }
    }
    ………………
    }
      

  4.   

    如果你继承了HibernateDaoSupport是不需要在自己的dao里面写private SessionFactory sessionFactory;的,在HibernateDaoSupport中已经帮你实例化了HibernateTemplate,你可以直接使用HibernateTemplate提供的一些模板。可以简化自己的dao操作。这种方法比自己写sessionFactory省事