hibernate 问题

public class LoginService {
private Login mb;
private LoginImpl loginImpl;
public LoginImpl getLoginImpl() {
return loginImpl;
}

public void setLoginImpl(LoginImpl loginImpl) {
    this.loginImpl = loginImpl;
}

public Login getMb() {
    return mb;
}

public void setMb(Login mb) {
    this.mb = mb;
}

public String creat(){
    mb.getPwd();
    mb.getUsername();
    System.out.println(mb.getPwd()+"++++++++++++++++++");//确实得到值了从前台
    System.out.println(mb.getUsername()+"-------------------");//确实得到值了从前台
    loginImpl.creatMember(mb);//这里是null  为什么??
    return "success";
 }

public class LoginImpl {

static Session session = null;

public void creatMember(Object o){
    try{
        session = sessionFactory.opensession();
        Transaction tx = session.beginTransaction();
        session.save(o);
        tx.commit();
    }catch(HibernateException ex){
        ex.printStackTrace();
    }
}

}

下面是sessionfactory的方法

package util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class sessionFactory {
private static SessionFactory sf =null;

public static void Session(){
    try{
        sf = new Configuration().configure().buildSessionFactory();
    }catch(HibernateException ex){
        throw new RuntimeException("Exception is"+ex.getMessage());
    }
}

public static Session opensession (){
    Session s = sf.openSession();
    return s;
}

public static void closeSession(Session s){
    if(s!=null)
        s.close();
}

}

请问各位高手们 我想传过去一个对象 mb 然后save(mb)入库,进入MyEclipse调试看见 为啥loginImpl.creatMember(mb)为null啊??还有就是请问 我这么用hibernate 对嘛?

3个回答

这里的空指针是loginimpl,你又没给他初始化,他能不空吗

还有你这个命名很有歧义,不规范,关于数据库访问的类就叫
xxxDao,并且一般都把他定义成接口,而xxxDaoImpl类则是他的实现类

另外,你这个sessionFactory可以参考一下MyEclipse自动生成的
HibernateSessionFactory这个类,看它里面是怎么写的

还有这个creatMember()方法,一般就叫saveXxx(),这个实现
你知道要用事务,但没用全,你成功了要提交,失败了也要回滚啊,
所以要在
[code="java"]
catch(Exception e){
tx.rollback();
ex.printStackTrace();
}
[/code]
加一句回滚操作

不过你这个大体流程还是都有的,稍微注意一下细节就可以了

public String creat(){
mb.getPwd(); [color=red]——》mb.setPwd(mb.getPwd());[/color] mb.getUsername(); [color=red]——》mb.setUsername(mb.getUsername/color);

    System.out.println(mb.getPwd()+"++++++++++++++++++");//确实得到值了从前台 
    System.out.println(mb.getUsername()+"-------------------");//确实得到值了从前台 
    loginImpl.creatMember(mb);//这里是null  为什么?? 
    return "success"; 
 } 

public String creat(){
Login mb = new Login();
mb.setPwd(mb.getPwd());

mb.setUsername(mb.getUsername());
loginImpl.creatMember(mb);
return "success";
}

}
这样可以吗?我对hibernate也不熟,可以一起学习一下!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问