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>

测试数据


@Testpublic void testSession() throws Exception {//openSession:  创建Session, 每次都会创建一个新的sessionSession 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();// 从当前访问线程获取sessionSystem.out.println(session3 == session4);// 关闭 【以线程方式创建的session,可以不用关闭; 线程结束session自动关闭】//session3.close();//session4.close(); 报错,因为同一个session已经关闭了!}

转载于:https://www.cnblogs.com/zhong-fucheng/p/7202959.html

Hibernate第十一篇【配置C3P0数据库连接池、线程Session】相关推荐

  1. Mysql 连接池session_Hibernate第十一篇【配置C3P0数据库连接池、线程Session】

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

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

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

  3. Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)

    拷贝jar包 找到我们的hibernate安装包,在lib目录下找到optional目录,打开c3p0文件,拷贝里面的jar包到eclipse里 写一个测试类,代码入下 public class C3 ...

  4. javaweb mysql 连接池 c3p0 配置_javaWeb_JDBC_c3p0数据库连接池

    JDBC_c3p0数据库连接池 1.一个基本的c3p0数据库连接池 /** * 一个基本的从池c3p0数据库连接池 */ public static void testC3P0() throws Ex ...

  5. C3P0数据库连接池的配置

    在pom.xml文件中导入jar包 <dependency><groupId>com.mchange</groupId><artifactId>c3p0 ...

  6. c3p0 数据库连接池

    C3P0连接池 c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.c3p0一般是与Hibernate,Spring等框架一块使用的,当然也可以 ...

  7. 数据库连接池 DBCP和c3p0数据库连接池

    一.数据库连接池 1. 什么是连接池 传统的开发模式下,Servlet处理用户的请求,找Dao查询数据,dao会创建与数据库之间的连接,完成数据查询后会关闭数据库的链接. 这样的方式会导致用户每次请求 ...

  8. Mysql超时重连解决方案3: 配置c3p0连接池(终极方案)

    前面的文章中,我介绍了修改mysql默认超时时间和配置proxool连接池的方法来解决Mysql超时重连的问题.方案1不推荐,它并没有从根本上解决问题:方案2可用,但配置相对复杂:所有才有了方案3,它 ...

  9. hibernate4配置c3p0连接池报错

    在hibernate的xml文件中配置c3p0连接池时,运行报错: java.lang.ClassNotFoundException: Could not load requested class : ...

最新文章

  1. Java设计模式:观察者模式
  2. python自带 python2转python3 代码工具
  3. Linux学习之系统编程篇:利用 shm 进行进程间通信
  4. 面试时如何介绍自己的项目经验
  5. java学习(167):生产者消费者问题
  6. Python中dir,hasattr,getattr,setattr,vars的使用
  7. 95-38-035-Buffer-AbstractByteBuf
  8. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
  9. pbs分解_谈WBS与PBS
  10. mac 安装消息中间件---ActiveMQ
  11. 从零开始开发一款Android App
  12. 不要签名证书将网页打包封装成苹果APP,无需苹果企业签名,IPA证书签名,ios签名证书,免越狱安装
  13. 第四篇--关于device
  14. 石家庄地铁售票系统源代码
  15. 关于Excel自定义TEXTJOIN函数、SWITCH函数
  16. 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明 1
  17. Permute 3.5.9 小巧便捷的多媒体文件格式转换器
  18. RBF神经网络基本思想
  19. Leetcode0953. 验证外星语词典(simple)
  20. java语言可以编程无人机么_java可以作为第一门编程语言学习吗

热门文章

  1. 【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型
  2. HTML animate()动画更改多个元素背景颜色但不同时生效问题
  3. mysql8.0.13 rpm_Centos7 安装mysql 8.0.13(rpm)的教程详解
  4. LeetCode 940. 不同的子序列 II(动态规划)
  5. LeetCode 923. 三数之和的多种可能(双指针)
  6. 回溯应用-- 0-1背包问题
  7. c# 定位内存快速增长_改善C#程序,提高程序运行效率的50种方法
  8. python读取html文件正则替换_Python正则获取和过滤或者替换HTML标签的方法说明
  9. 微信小程序中带参数返回上一页的方法总结(三种)
  10. python中的类属性和实例属性