(16)Hibernate对连接池的支持
admin
2023-06-08 09:22:04
0次

除非我们用爱去对待一个人,否则我们无法了解他。 

We never can have a true view of man unless we have a love for him.



1、连接池知识

连接池的作用: 管理连接;提升连接的利用效率!

常用的连接池: C3P0连接池


Hibernate 自带的也有一个连接池,且对C3P0连接池也有支持!


Hibernate自带连接池:只维护一个连接,比较简陋。

可以查看hibernate.properties文件(%hibernate%/project/etc/hibernate.properties)


Hibernate对C3P0连接池支持的核心类是org.hibernate.connection.C3P0ConnectionProvider

告诉Hibernate使用的是哪一个连接池技术。

#hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider



hibernate.properties中连接池详细配置:

#################################
### Hibernate Connection Pool ###
#################################

hibernate.connection.pool_size 1            #Hibernate自带连接池:只有一个连接



###########################
### C3P0 Connection Pool###                 #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              #

#################################
### Plugin ConnectionProvider ###
#################################

## use a custom ConnectionProvider (if not set, Hibernate will choose a built-in ConnectionProvider using hueristics)

#hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
#hibernate.connection.provider_class org.hibernate.connection.DatasourceConnectionProvider
#hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider
#hibernate.connection.provider_class org.hibernate.connection.ProxoolConnectionProvider


2、使用连接池的步骤

(1)添加C3P0的jar包

    %hibernate%/lib/optional/c3p0/c3p0-0.9.1.jar

(2)在hibernate.cfg.xml文件中添加数据库连接池配置

    核心配置

		
				
		org.hibernate.connection.C3P0ConnectionProvider
		
		4
		8
		5000
		10
		10000
		2

    完整配置




    
    
        
        com.mysql.jdbc.Driver
        jdbc:mysql:///test	
        root
        root
		
        org.hibernate.dialect.MySQL5Dialect
        
        
		
		true
		
		false
		
		update
		
		
				
		org.hibernate.connection.C3P0ConnectionProvider
		
		4
		8
		5000
		10
		10000
		2
		
		
		
		 
    

(3)使用SHOW PROCESSLIST;进行测试

    测试代码

	@Test
	public void testPool()
	{
		Session session = sf.openSession();
		session.beginTransaction();
		
		Department dept = (Department)session.get(Department.class, 3);
		System.out.println(dept);	//在这里打断点,并使用  SHOW PROCESSLIST;  查看活跃连接
		
		session.getTransaction().commit();
		session.close();
	}

    测试方法

    a)在执行testPool()方法之前,使用SHOW PROCESSLIST;查看活跃的连接数量

    b)调试执行testPool()方法,停在断点时,查看活跃的连接数量

    c)testPool()方法执行完之后,查看活跃连接数量

    d)修改配置中hibernate.c3p0.min_size数目,再次执行a,b,c查看活跃连接数量



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...