哪为朋友知道SessionFactory.java中session = sessionFactory.openSession()是干什么用的?老是这句出错!在线候着

chinarenx 2005-12-06 09:52:16
public class SessionFactory {

private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

private static final ThreadLocal threadLocal = new ThreadLocal();

private static final Configuration cfg = new Configuration();

private static net.sf.hibernate.SessionFactory sessionFactory;

public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();

if (session == null) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession(); //就是这句!
threadLocal.set(session);
}

return session;
}

public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);

if (session != null) {
session.close();
}
}

private SessionFactory() {
}

}

2个例子都出现这个错,我用的MYECLIPSE 4.2,Hibernate 2。session = sessionFactory.openSession();这句有什么玄机吗?

java.lang.NullPointerException
com.nscorp.hibernate.SessionFactory.currentSession(SessionFactory.java:31)
com.nscorp.hibernate.VipService.getVipdataList(VipService.java:200)
org.apache.jsp.AddVipData_jsp._jspService(AddVipData_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

...全文
756 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2005-12-07
  • 打赏
  • 举报
回复
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}


程序应该是运行到这里的吧,应该有打印出错。
chinarenx 2005-12-06
  • 打赏
  • 举报
回复
好象没有

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
com.nscorp.hibernate.SessionFactory.currentSession(SessionFactory.java:31)
com.nscorp.hibernate.VipService.getVipdataList(VipService.java:200)
org.apache.jsp.AddVipData_jsp._jspService(AddVipData_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
ChDw 2005-12-06
  • 打赏
  • 举报
回复
SessionFactory 没有初始化好,应该是有打印 Error Creating SessionFactory的吧
chinarenx 2005-12-06
  • 打赏
  • 举报
回复
用户名,密码为空是可以连接数据库的,用户名可以为空,JSP连接数据库我会呀``````
rickhunterchen 2005-12-06
  • 打赏
  • 举报
回复
你可以参考一下这里:
http://www.blogjava.net/rickhunter/category/3664.html
rickhunterchen 2005-12-06
  • 打赏
  • 举报
回复
你没有用户名,密码怎么连数据库呢?
再怎么说,就算是空密码,用户名也要有一个。

另外,如果你是使用jsp连数据库,那么jdbc驱动需要倒入到lib包中,或者直接放在common/lib包中。
chinarenx 2005-12-06
  • 打赏
  • 举报
回复
这是我的hibernate.cfg.xml,在myeclipse中的DB Browser已经可以和数据库连接。

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="myeclipse.connection.profile">vipinfo</property>
<property name="connection.url">jdbc:mysql://localhost/vipinfo</property>
<property name="connection.username"></property>
<property name="connection.password"></property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="dialect">
net.sf.hibernate.dialect.MySQLDialect
</property>

<mapping resource="Add valid path" /><mapping resource="com/nscorp/hibernate/Vipdata.hbm.xml" />

</session-factory>

</hibernate-configuration>
rickhunterchen 2005-12-06
  • 打赏
  • 举报
回复
这是myeclipse可选的自动生成的session工厂。

这样你就省去了写建立session代码了。

java.lang.NullPointerException是空指针引用,多半是hibernate.cfg.xml的问题,或者没有jdbc驱动。
chinarenx 2005-12-06
  • 打赏
  • 举报
回复
请问怎么解决?
zeq258 2005-12-06
  • 打赏
  • 举报
回复
session = sessionFactory.openSession();

因为你的sessionFactory就没有初始化,
或者初始化的过程中有错误,所以不能用!

67,543

社区成员

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

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