HibernateUtil类:
/*
* 创建日期 2004-9-16
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package com;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
/**
* @author Administrator
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public class HibernateUtil {
private static Log log=LogFactory.getLog(HibernateUtil.class);
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
System.out.println("在hibernateUtil里的得到sessionFactory前!");
sessionFactory = new Configuration().configure().buildSessionFactory();
System.out.println("得到了sessionFactory!");
} catch (Throwable ex) {
log.error("Initial SessionFactory creation failed.", ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal session=new ThreadLocal();
public static Session currentSession() throws HibernateException{
//Session session=(Session)session.get();
Session s = (Session) session.get();
//open a new session,if this thread has none yet
if(s==null){
s=sessionFactory.openSession();
session.set(s);
}return s;
}
public static void closeSession()throws HibernateException{
Session s=(Session) session.get();
session.set(null);
if(s!=null)
s.close();
}
}
TestCat类:
/*
* 创建日期 2004-9-17
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package com;import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.Query;
import java.util.Iterator;
/**
* @author Administrator
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public class TestCat {
public void insert()throws Exception{
try{
System.out.println("在TestCat里,要得到session前!");
Session session=HibernateUtil.currentSession();
System.out.println("得到了session!,正要得到事务实例!");
Transaction tx=session.beginTransaction();
System.out.println("得到了事务实例!");
Cat c=new Cat();
c.setName("cat");
c.setSex('f');
c.setWeight(7.14f);
session.save(c);
tx.commit();
HibernateUtil.closeSession();
}catch(Exception e){
e.printStackTrace();
System.out.println("又错了!");
throw new Exception("又错了!");
}finally{
System.out.println("必须执行到这个地方!");
}
}
public void read()throws Exception{
try{
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("select cat from Cat as cat where cat.sex=:sex");
query.setCharacter("sex",'f');
for(Iterator it=query.iterate();it.hasNext();){
Cat cat=(Cat)it.next();
System.out.print("the name of cat is: "+cat.getName());
}
}catch(Exception e){
e.printStackTrace();
System.out.println("oh my god is error!");
throw new Exception("oh!my god is error");
}finally{
System.out.println("就知道你会执行到这里!");
}
}
}
Cat.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping> <class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT"> <!-- A 32 hex character is our surrogate key. It's automatically
generated by Hibernate with the UUID pattern. -->
<id name="id" type="string" unsaved-value="null" >
<column name="CAT_ID" sql-type="char(32)" not-null="true"/>
<generator class="uuid.hex"/>
</id> <!-- A cat has to have a name, but it shouldn' be too long. -->
<property name="name">
<column name="NAME" length="16" not-null="true"/>
</property> <property name="sex"/> <property name="weight"/> </class></hibernate-mapping>
关且Cat.java,HibernateUtil.java,TestCat.java都在WEB-INF/src/com下
/*
* 创建日期 2004-9-16
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package com;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
/**
* @author Administrator
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public class HibernateUtil {
private static Log log=LogFactory.getLog(HibernateUtil.class);
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
System.out.println("在hibernateUtil里的得到sessionFactory前!");
sessionFactory = new Configuration().configure().buildSessionFactory();
System.out.println("得到了sessionFactory!");
} catch (Throwable ex) {
log.error("Initial SessionFactory creation failed.", ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal session=new ThreadLocal();
public static Session currentSession() throws HibernateException{
//Session session=(Session)session.get();
Session s = (Session) session.get();
//open a new session,if this thread has none yet
if(s==null){
s=sessionFactory.openSession();
session.set(s);
}return s;
}
public static void closeSession()throws HibernateException{
Session s=(Session) session.get();
session.set(null);
if(s!=null)
s.close();
}
}
TestCat类:
/*
* 创建日期 2004-9-17
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package com;import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.Query;
import java.util.Iterator;
/**
* @author Administrator
*
* 更改所生成类型注释的模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
public class TestCat {
public void insert()throws Exception{
try{
System.out.println("在TestCat里,要得到session前!");
Session session=HibernateUtil.currentSession();
System.out.println("得到了session!,正要得到事务实例!");
Transaction tx=session.beginTransaction();
System.out.println("得到了事务实例!");
Cat c=new Cat();
c.setName("cat");
c.setSex('f');
c.setWeight(7.14f);
session.save(c);
tx.commit();
HibernateUtil.closeSession();
}catch(Exception e){
e.printStackTrace();
System.out.println("又错了!");
throw new Exception("又错了!");
}finally{
System.out.println("必须执行到这个地方!");
}
}
public void read()throws Exception{
try{
Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("select cat from Cat as cat where cat.sex=:sex");
query.setCharacter("sex",'f');
for(Iterator it=query.iterate();it.hasNext();){
Cat cat=(Cat)it.next();
System.out.print("the name of cat is: "+cat.getName());
}
}catch(Exception e){
e.printStackTrace();
System.out.println("oh my god is error!");
throw new Exception("oh!my god is error");
}finally{
System.out.println("就知道你会执行到这里!");
}
}
}
Cat.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping> <class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT"> <!-- A 32 hex character is our surrogate key. It's automatically
generated by Hibernate with the UUID pattern. -->
<id name="id" type="string" unsaved-value="null" >
<column name="CAT_ID" sql-type="char(32)" not-null="true"/>
<generator class="uuid.hex"/>
</id> <!-- A cat has to have a name, but it shouldn' be too long. -->
<property name="name">
<column name="NAME" length="16" not-null="true"/>
</property> <property name="sex"/> <property name="weight"/> </class></hibernate-mapping>
关且Cat.java,HibernateUtil.java,TestCat.java都在WEB-INF/src/com下
解决方案 »
- Java与Sharepoint集成
- struts 文件上传,根目录问题
- JS中如何根据日期查询是星期几
- hibernete中一对多关联 多的一端关联的可以不是一端的主键么?---在线等
- Struts问题:怎样在JSP页面中得到org.apache.struts.util.MessageResources类的对象?
- struts中下拉列表的三级联动问题!急!!!
- htmlUnit获取的页面中有VBScript错误
- XML配置文件的校验问题
- 初学xml:关于用sax解析xml文件的一些疑惑。
- 急,各位大虾帮忙,如何往oracle插入CLOB类型子段,
- 新手提问,如何把一个comboBox加入JTable的某一个Cell(不是整个row或者column)
- help: jsp和socket编程如何结合
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="net.sf.hibernate.Transaction,net.sf.hibernate.cfg.*,net.sf.hibernate.Session"%>
<%@ page import="net.sf.hibernate.Query,com.HibernateUtil,com.Cat,java.util.*,com.booer.wloa.util.*"%>
<jsp:useBean id="tc" scope="page" class="com.TestCat"/>
<!DOCTYPE HTML PUBLIC "-//w3c//did html 4.0 transitional//en">
<html>
<head>
<title>lomboz jsp</title></head>
<body>
<%
System.out.println("start insert()!");
tc.insert();
System.out.println("end insert() and start read().");
//Transaction tx=
tc.read();
System.out.println("end read().");
%>
</body>
</html>
启动tomcat输入http://localhost:8080/test/ht.jsp后出现的错误如下:
org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)
root cause javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:536)
at org.apache.jsp.ht_jsp._jspService(ht_jsp.java:89)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)郁闷中----:
我想是出现的JSP编译错误,
跟踪一下是在HibernateUtil.java中的
sessionFactory = new Configuration().configure().buildSessionFactory();
一句出现错误,本人想可能是读取hibernate.cfg.xml时出现问题,一直不解,请赐教!谢谢
100分结贴
SessionFactory sf = new Configuration().addClass(Cat.class).buildSessionFactory();
private static SessionFactory sessionFactory;
/**
*
* @return Session
* @throws HibernateException
* 返回一个会话
*/
public synchronized static Session openSession() throws HibernateException {
if (sessionFactory == null) {
init();
}
return sessionFactory.openSession();
}
/**
* 初始化会话工厂
*
*/
private static void init() {
Configuration conf = null;
try {
conf = new Configuration().configure();
sessionFactory = conf.buildSessionFactory();
} catch (MappingException e) {
e.printStackTrace();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
hibernate.cfg.xml:<hibernate-configuration> <session-factory>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/test</property>
<property name="hibernate.dialect">net.sf.hibernate.dialect.Sybase11_9_2Dialect</property>
<property name="hibernate.use_outer_join">false</property>
<!--property name="hibernate.show_sql">true</property-->
<!--property name="hibernate.cglib.use_reflection_optimizer">false</property-->
<property name="hibernate.connection.pool.size">1</property>
<property name="hibernate.statement_cache.size">25</property>
<property name="hibernate.jdbc.fetch_size">50</property>
<property name="hibernate.jdbc.batch_size">30</property>
<property name="hibernate.transaction.manager_lookup_class">net.sf.hibernate.transaction.JBossTransactionManagerLookup</property>
<property name="hibernate.cache.provider_class">net.sf.hibernate.cache.HashtableCacheProvider</property>
<!-- Mapping files -->
<mapping resource="com/Cat.hbm.xml"/>
</session-factory></hibernate-configuration>