Hibernate 连接池配置配置

1、Hibernate内置连接池

hibernate.cfg.xml文件内容:




	
		
		com.mysql.cj.jdbc.Driver
		jdbc:mysql://192.168.56.101:3306/bookstore?useSSL=false
		billy
		xxxxxx
		true

		
	

以上配置没有明确说明使用何种类型连接池,Hibernate会使用内置的连接池实现,采用默认值。这种实现并非面向生产环境,多用于开发测试。

2、javax.sql.DataSource连接池

Hibernate可以与javax.sql.DataSource类型的连接池集成,通过JNDI方式直接从连接池取得连接。

以Tomcat为例,可以修改Tomcat的conf下的context.xml文件,在这里边定义连接数据库的信息及连接池配置。当然context.xml文件也可以放置在web项目下的META-INF目录下。前者Tomcat下的所有WEB都可以使用,后者则只有当前WEB应用可以使用。内容如下:




	

在web应用的web.xml中引用该资源,如:


	
		DB Connection
		jdbc/bookstore
		javax.sql.DataSource
		Container
	

hibernate的配置文件改为如下内容:


	
		
		java:comp/env/jdbc/bookstore
		org.hibernate.dialect.MySQL8Dialect
		true

		
	

关键是这句话:java:comp/env/jdbc/bookstore

这样Hibernate就可以直接使用由Tomcat容器管理的连接池。

如何为Tomcat设置数据库连接池资源,参考文档:https://www.codejava.net/servers/tomcat/configuring-jndi-datasource-for-database-connection-pooling-in-tomcat

3、C3P0数据库连接池

javax.sql.DataSource连接池是由Tomcat容器管理的,也可以创建由项目自己管理的数据库连接池,C3P0是其中一种。

首先引入C3P0的相关jar包,如果用maven管理依赖,则在项目的pom文件中加入如下内容:


    org.hibernate
    hibernate-c3p0
    5.4.1.Final

hibernate.cfg.xml内容:




	
		
		com.mysql.cj.jdbc.Driver
		jdbc:mysql://192.168.56.101:3306/bookstore?useSSL=false
		billy
		******

		
		org.hibernate.c3p0.internal.C3P0ConnectionProvider
		5
		20
		120
		3000
		true

		
	

里边既包括数据库连接配置信息,也包含C3P0连接池配置信息。C3P0的连接池属性还有很多,它实现了很多功能,可参考相关文档查看。

4、Proxool数据库连接池

导入proxool依赖包,pom配置:


    org.hibernate
    hibernate-proxool
    5.4.1.Final

在项目class path目录下增加proxool.xml配置文件:



  
    ProxoolPool
    jdbc:mysql://192.168.56.101:3306/bookstore?useSSL=false
    com.mysql.cj.jdbc.Driver
    
      
      
    
     
    20  
    5 
    90000 
    10 
    5  
    true 
    select CURRENT_DATE    
  

hibernate.cfg.xml内容:




	
		
		ProxoolPool
		proxool.xml
		org.hibernate.proxool.internal.ProxoolConnectionProvider
		true

		
	

5、其它连接池配置

除了以上四种方式,Hibernate还支持其它类型的数据库连接池配置。详细可参考:http://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#database

你可能感兴趣的:(Hibernate)