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条)

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。