| 网站首页 | 模板 | 资料 | 源码 | 工具 | 开发 | 设计 | 安全 | 项目 | 网络 | 图片 | 系统 | 数据库 | 博客 | 会员中心 | 小说 | 
MYFTP 精品资料下载
网络学院
学习资料
源码模版
您现在的位置: 精品下载 >> 开发 >> 热门框架 >> Hibernate >> 文章正文 用户登录 新用户注册
关于Hibernate使用外部Connection的问题            【字体:
关于Hibernate使用外部Connection的问题
作者:佚名    文章来源:不详    点击数:    更新时间:2007-12-6

  最近在一个项目中试用了 Hibernate . 因为项目分两部分来做,在另一个部分中,已经使用了一个连接池(自行开发的).现在两部分要合在一起,于是便出现了如下问题.

  开始,我们决定使用Hibernate的外部连接方法进行数据访问:

  java代码: 

 1  
2  public static DbSession openSession() {
...}
 3      DbSession dbSession = null;
4      try {
...}
 5        //System.out.println("session is start");
 6        ConnectionPool connectionPool = PooledConnectionFactory.getConnectionPool();
 7        Connection con = connectionPool.getConnection();
 8       
 9        Session s = (Session) session.get();
10       if (s == null) {
...}
 11          s = fact.openSession(con);//在此,使用外部连接池所给的连接
 12          session.set(s);
 13       }
 14 
 15       dbSession = new DbSession(s);
 16     }  catch (Throwable t) {
 17       String msg = "couldn’t open a hibernate session for SessionFactory ’"  + "’";
 18       log.error( msg, t );
 19       throw new DbException( msg + " : " + t.getMessage() );
 20     }
 21     return dbSession;
 22   }
 23

  关闭Session方法如下:

  java代码: 

 1  
2  public static void closeSession() throws HibernateException,Exception{
...}
 3          Session s = (Session) session.get();
 4          session.set(null);
5          if (s != null){
...}
 6              s.connection().close();       
 7              s.close();
 8              System.out.println("session closing");
 9              //s = null;
 10            
 11         }
 12     }
 13 

  问题出现了.在我们很慢点击的访问下还好.只要稍刷的快些,便会出现 Can’t excute Query 的错误.大概时在执行某一查询时, Session中的Connection为close.或 session 为空.很奇怪,也许是这种方法在快速并发访问时,会出现这个问题.其实在Session.close()的时候,Session是不会为空的..所以在此有些不理解.怎么会取到已经关闭的连接呢.不知道大家有没有遇到过.

  现在,我们有两种解决办法.

  一是,将前一部分的连接池注册为DataSource,这样由Hibernate调用.
  二是,将前一部分的连接池改为Hibernate所带的DBCP等.

  这两种方法都不难更改.

  不过,只是不理解上述的BUG.所以和大家讨论一下.也希望 Robbin 能看到.解释一下.

文章录入:chqnet    责任编辑:chqnet 
  • 上一篇文章: 没有了

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    DIV+CSS布局-- 关于ID和CLAS
    CSS中关于字体处理效果的思考
    CSS关于box(盒模式)的一系
    关于使用CSS居中(包括水平/垂
    在CSS中关于字体处理效果的思
    CSS文本:text-kashida-spac
    CSS文本:white-space
    关于CSS的一小点心得
    基础——关于CSS样式表
    关于使用CSS居中(包括水平/垂
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)