weixin_42361296 2010-06-16 21:46
浏览 248
已采纳

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条回答 默认 最新

  • stang003 2010-06-17 20:56
    关注

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

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

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题