博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决this.getHibernateTemplate()==null的问题
阅读量:5955 次
发布时间:2019-06-19

本文共 2114 字,大约阅读时间需要 7 分钟。

刚刚在整合SSH时碰到了这样一个问题:

当我用junit测试时不会报任何异常,数据也都能得到
public class BuyerTest {
@BeforeClass
public static void begin() throws Exception{}
 
@Test
public void save(){
  Configuration config=new AnnotationConfiguration().configure();
  SessionFactory sf=config.buildSessionFactory();
  Session session=sf.openSession();
  Transaction tr=session.beginTransaction();
  try {
    tr.begin();
    Buyer b=(Buyer) session.get(Buyer.class,"zs");
    System.out.println(b.getUserpwd());
    tr.commit();
    } catch (HibernateException e) {
      e.printStackTrace();
      tr.rollback();
    }
  }
}
可是当我写个main方法测试dao包时,却出现空指针异常:

 


我的代码是这样的:
dao包:

public class BuyerDao extends HibernateDaoSupport {
  public Buyer save() {
    HibernateTemplate template=this.getHibernateTemplate();
    String hql="from Buyer u";
    List<Buyer> list=template.find(hql);
    if(null==list){
      return null;
    }
    if(list.size()!=0){
      System.out.println(list.get(0).getUserpwd());
      return list.get(0);
    }
    return null;
  }
}
-----------------------------------------------------------------
main方法:
public class main {
  public static void main(String[] args) {
    BuyerDao udao=new BuyerDao();
    udao.save();
   }
}
-----------------------------------------------------------------
搞了好长时间,在网上找了下答案,没怎么看明白,但我发现有人说看看
this.getHibernateTemplate()是否为空,我调试了下,发现我的代码中
this.getHibernateTemplate()确实为null!!!
ps:我的applicationContext.xml文件没有错误。
 
这里我们需要想一下为什么要用spring?或者说使用spring要用到它的什么思想等等。
---使用spring是要用到它的依赖注入的,而直接new出来的是没有依赖注入的,故对象没有初始化。
也就是说
BuyerDao udao=new BuyerDao();
udao.save();
这里不存在依赖注入,也就自然而然地报空指针异常。
解决办法:在main方法中,不要对
BuyerDao
 进行初始化,而是通过配置文件applicationContext.xml来获取。
ClassPathXmlApplicationContext resource  = new  ClassPathXmlApplicationContext("applicationContext.xml");; 
BuyerDao dao=(BuyerDao) resource.getBean("userDao");
dao.save();
 
注:userDao是配置文件
applicationContext.xml中bean的id值
<bean id="userDao" class="jnuit.test.BuyerDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
这样,this.getHibernateTemplate()==null的问题就解决了。

转载于:https://www.cnblogs.com/gxpblogs/archive/2013/05/31/3109544.html

你可能感兴趣的文章
spring整合ehcache
查看>>
《Spring Boot实战》读书笔记
查看>>
molicode生成vue增删改查功能
查看>>
类与类加载器---《深入理解java虚拟机》
查看>>
Magento(CE1.X)自带模块解析一
查看>>
鸟哥Linux私房菜_基础篇(第二版)_第十章学习笔记
查看>>
Hibernate 对c3p0配置不支持导致的错误
查看>>
python学习之网络编程
查看>>
64位Java开发平台的选择,如何区分JDK,Tomcat,eclipse的32位与64版本
查看>>
谈Win32汇编
查看>>
sqlserver_identity
查看>>
其他的AdapterView——Spinner
查看>>
iOS UIWebView打电话
查看>>
java高质量图片压缩
查看>>
源码解读Linux的limits.conf文件
查看>>
cisco 增强型内部网关路由协议EIGRP笔记
查看>>
exchange 2010 无人值守安装
查看>>
java this关键字的使用
查看>>
linux基础1
查看>>
Google地球查看香港地形
查看>>