通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题

在使用hibernate的应用中,如果需要直接使用Java.sql.Connection,一般我们是通过hibernate的session.connection()获得的,然后session.close(),但connection是不需要close的。

操作一段时间后,查询会很慢,好像死机了一样。原因是查询时,session无法从连接池里获取连接,

因为连接已经达到配置的最大值。

解决办法:connection使用后,调用session.disconnection()方法可以把连接放回连接池。

时间: 2024-07-29 11:40:31

通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题的相关文章

rabbitMQ队列处理导致连接池耗尽Tomcat假死问题排查处理

背景: 监听器针对RabbitMQ队列做业务数据处理 系统问题表现: 业务系统无法正常使用,所有请求均不予相应,报404异常 控制台问题表现: 接收队列数据的logger日志打印,但是相关sql不打印(之前sql打印) 报错异常: dbcp连接池(开始使用) [WARN ] 19:01:05.762 [SimpleAsyncTaskExecutor-1] o.h.util.JDBCExceptionReporter - SQL Error: 1040, SQLState: 08004 [ERRO

hibernate将connection放进threadlocal里实现数据库连接池

Why ThreadLocal? 无论如何,要编写一个多线程安全(Thread-safe)的程序是困难的,为了让线程共享资源,必须小心地对共享资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意对象的锁定与释放,避免产生死结,种种因素都使得编写多线程程序变得困难. 尝试从另一个角度来思考多线程共享资源的问题,既然共享资源这么困难,那么就干脆不要共享,何不为每个线程创造一个资源的复本.将每一个线程存取数据的行为加以隔离,实现的方法就是给予每个线程一个特定空间来保管该线程所独

Hibernate Session 获取connection

Hibernate Session 获取connection 由于最近一个项目要用到一条辅助的SQL ,hibernate里面的SQLQuery API 总的SQL语句不能包含 : 冒号, 固放弃Hibernate, 直接使用JDBC. Hibernate3.3.2版本中getSession().connection()已被弃用,替代方法 SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection() 原有方法 get

[原理][来源解析]spring于@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关联

Spring 捆绑Hibernate. 夹: 一.  1. Spring 怎样处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3.  propagation=Propagation.SUPPORTS和propagation=Propagation.require对生成Session有何影响,共同点和差别 ? 3.1. 未配置@Transaction和 配置@Transaction(propagation=P

[原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载

问题: 一. 1. Spring 如何处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3. propagation=Propagation.SUPPORTS 和propagation=Propagation.require对生成Session有何影响 ? 共同点:都会进入aspect切面处理, 试图新建Session,开启Transaction ,都能获得.TransactionStatus 区别: 前者成

spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常

java.lang.IllegalStateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常 这个错误,网上说的原因一大推,反正我这个出的问题 是因为 虽然我在 spring 里把事务都配置好了,结果运行就出现这个错误,看看配置都没什么问题,都是网上 案例 照 写编码的,还是错的,结果发现是因为 我

MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题

///MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题,在webconfig中配置<system.web><authentication mode="Forms">      <forms loginUrl="~/Account/Login" timeout="2880" cookieless="UseCookies" />    </authent

Hibernate Session &amp; Transaction详解

Hibernate Session & Transaction详解 HIbernate中的Session Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持久化操作核心API, 注意这里的Session的含义,它与传统意思上web层的HttpSession并没有关系,Hibernate Session之与Hibernate,相当于JDBC Connection相对与JDBC. Session对象是有生命周期的,它以Transaction对象的事务开始和结束边界

hibernate session问题大总结

openSessionInView的作用! OpenSessionInViewFilter是Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,直到这个请求结束,具体是通过一个Filter来实现的.由于Hibernate引入了Lazy Load特性,使得脱离Hibernate的Session周期的对象如果再想通过getter方法取到其关联对象的值,Hibernate会抛出一个LazyLoad