日期:2014-05-18  浏览次数:20776 次

spring+hibernate getHibernateTemplate()==null的问题
我自己写了一个测试类测试DAO,结果遇到了getHibernateTemplate()为空的问题,没法操作数据库。以下是我的dao类和测试类。

DAO
package   com.ssh.dao;

import   org.springframework.context.ApplicationContext;
import   org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import   com.ssh.hibernate.pojo.IGroup;

public   class   GroupDAO   extends   HibernateDaoSupport{
private   static   GroupDAO   _instance   =   null;

private   GroupDAO(){

}

public   static   GroupDAO   getInstance(){
if(_instance==null)
_instance   =   new   GroupDAO();
return   _instance;
}

public   int   saveGroup(IGroup   ig){
int   result   =   -1;
System.out.println(getHibernateTemplate());
getHibernateTemplate().save(ig);
return   result;
}
}

TEST
package   com.ssh.test;

import   org.springframework.context.ApplicationContext;
import   org.springframework.context.support.FileSystemXmlApplicationContext;

import   com.ssh.dao.GroupDAO;
import   com.ssh.hibernate.pojo.IGroup;

public   class   TestGroupDAO   {
public   void   testSaveGroup(){
IGroup   ig   =   new   IGroup();
ig.setMemo( "ewrewrw ");
ig.setNameEn( "ee ");
ig.setNameZh( "ee ");
int   result   =   GroupDAO.getInstance().saveGroup(ig);
System.out.println(result);
}
public   static   void   main(String[]   args){
TestGroupDAO   t   =   new   TestGroupDAO();
t.testSaveGroup();
}
}

一天了,还没找到什么原因,请大家指点。谢谢!

------解决方案--------------------
根本就不是你那样用的,你不能自己去new一个dao,将dao交给spring管理,然后通过spring容器来获得它
------解决方案--------------------
应该是spring配置文件中没有配置操作hibernate的sessionFaction类
------解决方案--------------------
没有在你的DAO中注入类似这样的一段代码
<bean id= "ModelDAO " class= "org.giis.dao.impl.ModelDAOImpl ">
<property name= "sessionFactory ">
<ref bean= "SessionFactory " />
</property>
</bean>