Hibernate 中的SessionFactory 初始化为空

sj307639429 2009-11-30 10:13:10
我用junit测试一个简单的hibernate程序,测试程序如下:
package org.jun.hibernate.model;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import org.jun.hibernate.model.Teacher; //建立的与表对应的类

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;


public class TeacherTest {
private static SessionFactory sf = null;

@BeforeClass
public static void beforeClass() {
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
}

@Test
public void TeacherSave() {
Teacher t = new Teacher();
t.setId(2);
t.setName("t1");
t.setTitle("叫兽");

System.out.println(sf); //这里输出为null;
Session session = sf.openSession();// 这里报“java.lang.NullPointerException”

session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
}

@AfterClass
public static void afterClass() {
sf.close();
}
}


在初始化SessionFactory时,输出了Configuration 确认了Configuration初始化正常,就是SessionFactory时有问题,请教了~~~
...全文
248 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengchengjiji 2010-12-25
  • 打赏
  • 举报
回复
哈哈,你跟着他做肯定不行啦,因为你run as的时候,是测试testTeacherSave()方法,但是beforeClass()方法根本还没执行,所以你要测试通过,一定要整个类测试,明白了没?
sjz64472418 2010-03-17
  • 打赏
  • 举报
回复
我也犯了这个错!不过我是这样写的,因为文档中的辅助类是这么写的!使用Annotation不用加configure()
不过我的抛的是 'hibernate.dialect' must be set when no Connection avalable
很费解!
SessionFactory sf = new AnnotationConfiguration().buildSessionFactory();
道光2008 2009-12-01
  • 打赏
  • 举报
回复
System.out.println(sf); //这里输出为null;
Session session = sf.openSession();// 这里报“java.lang.NullPointerException”
晕死
你的sf是null,不报空指针错误,那就见鬼啦

public static void beforeClass() {
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
}

改为
public static void beforeClass() {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
}
sj307639429 2009-11-30
  • 打赏
  • 举报
回复
代码重写下

package org.jun.hibernate.model;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import org.jun.hibernate.model.Teacher; //建立的与表对应的类

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;


public class TeacherTest {
private static SessionFactory sf = null;

@BeforeClass
public static void beforeClass() {
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
}

@Test
public void TeacherSave() {
Teacher t = new Teacher();
t.setId(2);
t.setName("t1");
t.setTitle("叫兽");

System.out.println(sf); //这里输出为null;
Session session = sf.openSession();// 这里报“java.lang.NullPointerException”

session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
}

@AfterClass
public static void afterClass() {
sf.close();
}
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧