闹笑话了。。

今天老师让做Hibernate的Criteria的查询,也让我们顺便在熟悉下SSH框架,我就翻倒出来我一直准备的一个框架,开始在上面上敲ing,期间老师也给我们发了一个网址(也就是JE上的),让我们看看,我就结合着文章开始了做了起来,建起了数据库,生成了POJO,紧接着测试了DAO,但是老师报空指针异常,开了会,又测了测还是空,就让老师帮我调了一下。老师过来点开了错误行数,一看 Session sess = null; Criteria crit = sess.createCriteria(Cat.class); (JS写多了把,怎么会出这个笑话,笨!)
老师就笑了,“闹笑话了这是,session是空怎么取值”,当时就楞了,以为直接拿过来session就能用呢,结果必须得到session才行,也就是Session sess = this.getSession();或者用getHibernateTemplate()模板去得到session 。 想想真惭愧啊,真是闹笑话了,基础实在太烂了,再不补就烂泥收不起来了。我希望我把我每次犯下的错误都写到博文上,铭记自己的过失,并攒下来我的失败经验,把他们变成宝贵的成功果实,一点一滴。
我也查了下hibernate session 的所有创建方式 特此提醒自己:

开发J2EE项目时会常常考虑到Session对象创建的问题,一般有以下几种使用方法:
1、类的某个方法中创建一个对象。

2、创建一个工具类,负责创建Session对象,要获取Session对象时调用方法获取即可。
a、工具类中是采用单例模式。

b、static{}中加入SessionFactory对象,表示整个应用程序只创建一次。

c、提供一个getSesssion()方法,使用户获取对象。

3、在应用程序Tomcat服务器启动时就创建对象。

以下代码使用第三种方式创建Session对象。

二、在Tomcat启动的时,利用Filter进行Session的创建及关闭:

1、创建一个Filter文件:HibernateFilter.java
public class HibernateFilter implements Filter {

private static ThreadLocal threadLocal=new ThreadLocal();

private static SessionFactory sessionFactory=null;

public void destroy() {

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

try{

getSession();

}finally{

Session session=(Session)threadLocal.get();

if(session!=null){

if(session.isOpen()){

session.close();

}

threadLocal.remove();

}

}

}

public void init(FilterConfig arg0) throws ServletException {

Configuration cfg=new Configuration().configure();

sessionFactory=cfg.buildSessionFactory();

}

public static Session getSession(){

Session session=(Session)threadLocal.get();

if(session==null){

session=sessionFactory.getCurrentSession();

}

return session;

}

}

优点:Session的打开和关闭统一由Filter进行管理。

2、配置文件中配置Filter:(web.xml)
<filter>

.........

</filter>

3、测试

在程序中调用HibernateFilter类获取一个Session对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值