public class UserMgrDaoImp extends HibernateDaoSupport  implements UserMgrDao {public void addUser(User user) {this.getHibernateTemplate().save(user);
}public static void main(String args[]){
User user=new User();
user.setUsername("wangqiulei");
user.setName("name");
user.setPassword("123");
user.setEmail("[email protected]");
user.setAddress("dfdfd");
user.setTel("231231");
new UserMgrDaoImp().addUser(user);
}}这样写运行好像有问题,会抛出nullpointException,(说明:我是因为配置好像有错误,而后我想手动测试一下,看能不能把数据存进数据库,可是这样写了以后,就出现NullPointException,)我现在怀疑是没有注入SessionFactory,不知道是不是这个原因,如果是,手动怎样注入,怎样修改上面代码,麻烦各位高手帮忙,小弟不胜感激!

解决方案 »

  1.   

    首先在DAO实现类里面写上
    setSessionFacatory()这个方法;
    然后在配置文件中声明sessionFactory ,并将它注入到UserMgrDaoImp 的bean声明中
      

  2.   

    new UserMgrDaoImp()这个是你自己new出来的,肯定没有用到注入啊
      

  3.   

    你这样写:
    public class UserMgrDaoImp extends HibernateDaoSupport  implements UserMgrDao { public void addUser(User user) { this.getHibernateTemplate().save(user); 

    }
    spring 的配置文件中context.xml:
    <bean id="userDao" class="com. UserMgrDao">
    </bean>测试程序:
    public class Test {
    public static void main(String[] args) {
    ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "context.xml");//改成你自己的文件路径,相对于classes的路径
    这里我的是classes/context.xml
    UserMgrDaoImp  dao = (UserDao) ctx.getBean("userDao");User user=new User(); 
    user.setUsername("wangqiulei"); 
    user.setName("name"); 
    user.setPassword("123"); 
    user.setEmail("[email protected]"); 
    user.setAddress("dfdfd"); 
    user.setTel("231231"); 
    dao.addUser(user); }
      

  4.   

    我现在是不想在配置文件里面配置,我想手动注入SessionFactory,我配置文件原来好像就有错误,我现在只想测试一下看我这个方法和hibernate映射是不是真确,
      

  5.   

    既然能在配置文件里面注入,那么在类文件当中也应该可以注入得啊,我想问一下,在这个方法类当中怎样注入,如果要new出来也可以,或者是别的什么方法
      

  6.   

    如果你继承了HibernateDaoSupport这个类的话  它里面有一个sessionFactory的属性需要你来注
    入值
     如果你用了Spring的话那你就要配置sessionFactory  你那样写的话它的sessionFactory是空的
    所以抛出空指针了咯
      

  7.   

    那如何解决呢?我自己new出一个Sessionfactory,而后给它里面得sessionFactory, 能行不?