Hibernate连接池

Hibernate自带了连接池,但是呢,该连接池比较简单..而Hibernate又对C3P0这个连接池支持…因此我们来更换Hibernate连接池为C3P0

查看Hibernate自带的连接池

我们可以通过Hibernate.properties文件中查看Hibernate默认配置的连接池

hibernate.properties的配置文件可以在\project\etc找到

Hibernate的自带连接池啥都没有,就一个连接数量为1


查看Hibernate对C3P0的支持

  • #hibernate.c3p0.max_size 2 最大连接数
  • #hibernate.c3p0.min_size 2 最小连接数
  • #hibernate.c3p0.timeout 5000 超时时间
  • #hibernate.c3p0.max_statements 100 最大执行的命令的个数
  • #hibernate.c3p0.idle_test_period 3000 空闲测试时间
  • #hibernate.c3p0.acquire_increment 2 连接不够用的时候, 每次增加的连接数
  • #hibernate.c3p0.validate false

修改Hibernate连接池

我们在hibernate.cfg.xml中配置C3p0,让C30P0作为Hibernate的数据库连接池

查找Hibernate支持的连接池组件有什么

既然找到了,那么我们在hibernate.cfg.xml中配置对应的类就和相关配置就行了


<!-- 【连接池配置】 -->
<!-- 配置连接驱动管理类 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 配置连接池参数信息 -->
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.max_size">4</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">10</property>
<property name="hibernate.c3p0.idle_test_period">30000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>

线程Session

我们创建Session的时候,有两个方法

  • openSession()【每次都会创建新的Session】
  • getCurrentSession()【获取当前线程的Session,如果没有则创建】

一般地,我们使用线程Session比较多

如果要使用getCurrentSession(),需要在配置文件中配置:

        <!--配置线程Session-->
<property name="hibernate.current_session_context_class">thread</property>

测试数据


@Test
public void testSession() throws Exception {
//openSession: 创建Session, 每次都会创建一个新的session
Session session1 = sf.openSession();
Session session2 = sf.openSession();
System.out.println(session1 == session2);
session1.close();
session2.close(); //getCurrentSession 创建或者获取session
// 线程的方式创建session
// 一定要配置:<property name="hibernate.current_session_context_class">thread</property>
Session session3 = sf.getCurrentSession();// 创建session,绑定到线程
Session session4 = sf.getCurrentSession();// 从当前访问线程获取session
System.out.println(session3 == session4); // 关闭 【以线程方式创建的session,可以不用关闭; 线程结束session自动关闭】
//session3.close();
//session4.close(); 报错,因为同一个session已经关闭了!
}

Hibernate第十一篇【配置C3P0数据库连接池、线程Session】的更多相关文章

  1. Hibernate 5.x 配置 C3P0 数据库连接池

    Hibernate 5.x 配置 C3P0 连接池 首先准备好需要的 jar 包,这里我准备的是 Hibernate 5.2.10 版本: hibernate-core-5.2.10.Final.ja ...

  2. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Hibernate -- 配置c3p0连接池, 事务隔离级别, 管理session

    知识点1:配置c3p0连接池(了解) * 引入c3p0-0.9.1.jar * 在hibernate.cfg.xml文件中增加如下配置 <!-- C3P0连接池设定--> <!-- ...

  4. c3p0数据库连接池死锁问题

    项目进行压力测试的时候,运行大概1小时候,后台抛出以下异常: Nov 9, 2012 1:41:59 AM com.mchange.v2.async.ThreadPoolAsynchronousRun ...

  5. c3p0数据库连接池无法连接数据库—错误使用了username关键字

    一.问题描述 上篇博客说到了关于maven无法下载依赖jar包的问题,这篇博客再说一下关于在本个项目中遇到的关于使用C3P0连接池连接数据库的问题,真心很奇葩,在此,也请大家引起注意.首先看我的项目基 ...

  6. C3P0数据库连接池使用方法

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...

  7. APPARENT DEADLOCK!!!c3p0数据库连接池死锁问题

    项目进行压力测试的时候,运行大概1小时候,后台抛出以下异常: Nov 9, 2012 1:41:59 AM com.mchange.v2.async.ThreadPoolAsynchronousRun ...

  8. 【Java EE 学习 16 上】【dbcp数据库连接池】【c3p0数据库连接池】

    一.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: package day16.utils; import java.io.IOException; import java.lang.ref ...

  9. paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out

    paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out 作者Attilax ...

随机推荐

  1. Axure 入门

    Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写. Axure RP是美国Axu ...

  2. EasyUI Datagrid 鼠标悬停显示单元格内容

    第一种方式: .js 定义函数 <script type="text/javascript"> //格式化单元格提示信息 function formatCellTool ...

  3. 【Js应用实例】图片预览

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 更符合面向对象的数据库操作方式-OrmLite

    1. jar包下载 下载地址:http://ormlite.com/releases/,一般用core和android包即可. 如果使用的是android studio,也可以直接通过module s ...

  5. “无文件”恶意软件的威力:悄无声息一夜之间从ATM机中窃取80万美元

    去年雅虎接连曝出多个超大规模数据泄露事件,长期关注的你们一定都知道,5亿.10亿账户信息泄露的,除了雅虎也没谁了.就在这两天,5亿账户泄露的真相似乎正在浮出水面. 事件回顾 我们今天要讲的就是这桩5亿 ...

  6. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  7. Tensorflow之MNIST解析

    要说2017年什么技术最火爆,无疑是google领衔的深度学习开源框架Tensorflow.本文简述一下深度学习的入门例子MNIST. 深度学习简单介绍 首先要简单区别几个概念:人工智能,机器学习,深 ...

  8. 修改xcode初始生成代码

    xcode在新建新的工程的时候会默认生成一份代码,例如新建一个c++工程,其初始的代码如下: #include <iostream> int main(int argc, const ch ...

  9. FileDetector-基于java开发的照片整理工具

    1. 项目背景 开发这个功能的主要原因如下: 1. 大学期间拍摄了约50G的照片,照片很多 2. 存放不规范,导致同一张照片出现在不同的文件夹内,可读性差,无法形成记忆线. 3. 重复存放过多,很多照 ...

  10. Android Studio开发常见问题

    Compilation failed; see the compiler error output for details 错误描述 解决方法 原因:文件编码问题.进入项目根目录,在命令提示符下执行以 ...