在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Hibernate中怎么配置dbcp连接池

136次阅读
没有评论

共计 7105 个字符,预计需要花费 18 分钟才能阅读完成。

这篇文章主要介绍“Hibernate 中怎么配置 dbcp 连接池”的相关知识,丸趣 TV 小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Hibernate 中怎么配置 dbcp 连接池”文章能帮助大家解决问题。

1. 获取 DBCP jar

要将 DBCP 与 Hibernate 集成,您需要 commons-dbcp.jar 和 commons-pool-1.5.4.jar。

文件:pom.xml

project ... 
 repositories 
 repository 
 id JBoss repository /id 
 url http://repository.jboss.org/nexus/content/groups/public/ /url 
 /repository 
 /repositories 
 dependencies 
 dependency 
 groupId org.hibernate /groupId 
 artifactId hibernate-core /artifactId 
 version 3.6.3.Final /version 
 /dependency 
 dependency 
 groupId commons-dbcp /groupId 
 artifactId commons-dbcp /artifactId 
 version 1.4 /version 
 /dependency 
 /dependencies /project

2.DBCPConnectionProvider

要将 DBCP 与 Hibernate 集成,您需要创建一个“DBCPConnectionProvider”类。

文件:DBCPConnectionProvider.java

package com.mkyong.util;import java.io.PrintWriter;import java.io.StringWriter;import java.sql.Connection;import java.sql.SQLException;import java.util.Iterator;import java.util.Map;import java.util.Properties;import org.apache.commons.dbcp.BasicDataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;import org.hibernate.HibernateException;import org.hibernate.cfg.Environment;import org.hibernate.connection.ConnectionProvider;import org.hibernate.connection.ConnectionProviderFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class DBCPConnectionProvider implements ConnectionProvider { private static final Logger log = LoggerFactory
 .getLogger(DBCPConnectionProvider.class); private static final String PREFIX =  hibernate.dbcp. private BasicDataSource ds; // Old Environment property for backward-compatibility (property removed in
 // Hibernate3)
 private static final String DBCP_PS_MAXACTIVE =  hibernate.dbcp.ps.maxActive // Property doesn t exists in Hibernate2
 private static final String AUTOCOMMIT =  hibernate.connection.autocommit public void configure(Properties props) throws HibernateException { try {
 log.debug( Configure DBCPConnectionProvider // DBCP properties used to create the BasicDataSource
 Properties dbcpProperties = new Properties(); // DriverClass   url
 String jdbcDriverClass = props.getProperty(Environment.DRIVER);
 String jdbcUrl = props.getProperty(Environment.URL);
 dbcpProperties.put(driverClassName , jdbcDriverClass);
 dbcpProperties.put(url , jdbcUrl); // Username / password
 String username = props.getProperty(Environment.USER);
 String password = props.getProperty(Environment.PASS);
 dbcpProperties.put(username , username);
 dbcpProperties.put(password , password); // Isolation level
 String isolationLevel = props.getProperty(Environment.ISOLATION); if ((isolationLevel != null)
  (isolationLevel.trim().length()   0)) {
 dbcpProperties.put( defaultTransactionIsolation ,
 isolationLevel);
 } // Turn off autocommit (unless autocommit property is set)
 String autocommit = props.getProperty(AUTOCOMMIT); if ((autocommit != null)   (autocommit.trim().length()   0)) {dbcpProperties.put( defaultAutoCommit , autocommit);
 } else {
 dbcpProperties.put( defaultAutoCommit ,
 String.valueOf(Boolean.FALSE));
 } // Pool size
 String poolSize = props.getProperty(Environment.POOL_SIZE); if ((poolSize != null)   (poolSize.trim().length()   0)
  (Integer.parseInt(poolSize)   0)) {dbcpProperties.put( maxActive , poolSize);
 } // Copy all  driver  properties into  connectionProperties 
 Properties driverProps = ConnectionProviderFactory
 .getConnectionProperties(props); if (driverProps.size()   0) {StringBuffer connectionProperties = new StringBuffer(); for (Iterator iter = driverProps.entrySet().iterator(); iter
 .hasNext();) {Map.Entry entry = (Map.Entry) iter.next();
 String key = (String) entry.getKey();
 String value = (String) entry.getValue();
 connectionProperties.append(key).append(=).append(value); if (iter.hasNext()) {
 connectionProperties.append( 
 dbcpProperties.put( connectionProperties ,
 connectionProperties.toString());
 } // Copy all DBCP properties removing the prefix
 for (Iterator iter = props.entrySet().iterator(); iter.hasNext();) {Map.Entry entry = (Map.Entry) iter.next();
 String key = (String) entry.getKey(); if (key.startsWith(PREFIX)) {String property = key.substring(PREFIX.length());
 String value = (String) entry.getValue();
 dbcpProperties.put(property, value);
 } // Backward-compatibility
 if (props.getProperty(DBCP_PS_MAXACTIVE) != null) {
 dbcpProperties.put( poolPreparedStatements ,
 String.valueOf(Boolean.TRUE));
 dbcpProperties.put( maxOpenPreparedStatements ,
 props.getProperty(DBCP_PS_MAXACTIVE));
 } // Some debug info
 if (log.isDebugEnabled()) {StringWriter sw = new StringWriter();
 dbcpProperties.list(new PrintWriter(sw, true));
 log.debug(sw.toString());
 } // Let the factory create the pool
 ds = (BasicDataSource) BasicDataSourceFactory
 .createDataSource(dbcpProperties); // The BasicDataSource has lazy initialization
 // borrowing a connection will start the DataSource
 // and make sure it is configured correctly.
 Connection conn = ds.getConnection();
 conn.close(); // Log pool statistics before continuing.
 logStatistics();} catch (Exception e) {
 String message =  Could not create a DBCP pool 
 log.error(message, e); if (ds != null) { try {ds.close();
 } catch (Exception e2) { // ignore
 ds = null;
 } throw new HibernateException(message, e);
 log.debug(Configure DBCPConnectionProvider complete} public Connection getConnection() throws SQLException {
 Connection conn = null; try {conn = ds.getConnection();
 } finally {logStatistics();
 } return conn;
 } public void closeConnection(Connection conn) throws SQLException { try {conn.close();
 } finally {logStatistics();
 } public void close() throws HibernateException {
 log.debug( Close DBCPConnectionProvider 
 logStatistics(); try { if (ds != null) {ds.close();
 ds = null;
 } else {log.warn( Cannot close DBCP pool (not initialized) 
 } catch (Exception e) {throw new HibernateException( Could not close DBCP pool , e);
 log.debug(Close DBCPConnectionProvider complete} protected void logStatistics() { if (log.isInfoEnabled()) {log.info( active:   + ds.getNumActive() +   (max:  
 + ds.getMaxActive() + )   +  idle:   + ds.getNumIdle()
 +  (max:   + ds.getMaxIdle() +  ) 
 } public boolean supportsAggressiveRelease() { return false;}

3. 在 hibernate.cfg.xml 中配置 DBCP

现在,链接您的“DBCPConnectionProvider”并在“hibernate.cfg.xml”中定义 DBCP 属性,例如:

文件:hibernate.cfg.xml

 ?xml version= 1.0  encoding= utf-8 ? !DOCTYPE hibernate-configuration PUBLIC
-//Hibernate/Hibernate Configuration DTD 3.0//EN
http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd hibernate-configuration
  session-factory
  property name= hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver /property
  property name= hibernate.connection.url jdbc:oracle:thin:@localhost:1521:MKYONG /property
  property name= hibernate.connection.username mkyong /property
  property name= hibernate.connection.password password /property
  property name= hibernate.dialect org.hibernate.dialect.Oracle10gDialect /property
  property name= hibernate.default_schema MKYONG /property
  property name= show_sql true /property  
  property name= hibernate.connection.provider_class
com.mkyong.util.DBCPConnectionProvider  /property
  property name= hibernate.dbcp.initialSize 8 /property
  property name= hibernate.dbcp.maxActive 20 /property
  property name= hibernate.dbcp.maxIdle 20 /property
  property name= hibernate.dbcp.minIdle 0 /property  
  mapping  >4. 运行,输出

完成,运行它并查看以下输出:

关于“Hibernate 中怎么配置 dbcp 连接池”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注丸趣 TV 行业资讯频道,丸趣 TV 小编每天都会为大家更新不同的知识点。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计7105字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 一区二区三区久久精品 | 深夜视频在线播放深夜福利 | 97久久精品一区二区三区 | 国产在线看不卡一区二区 | 亚洲av无码乱码在线观看 | 91精选在线观看 | 一级免费看| 国产免费人视频在线观看免费 | 亚洲成aⅴ人最新无码 | 在线网站你懂的 | 无码男男做受g片在线观看视频 | 国产91精品一区 | 亚洲产国偷v产偷v自拍涩爱 | 亚洲精品久久久久午夜福禁果tⅴ | 国自产拍偷拍精品啪啪模特 | 国产欧美精品一区二区三区-老狼 | 国产裸拍裸体视频在线观看 | 亚洲av成人精品网站在线播放 | 国产成人av在线影院 | 91成人精品视频 | 无码人妻品一区二区三区精99 | av无码电影一区二区三区 | 偷看农村妇女牲交 | 18禁无遮挡羞羞污污污污网站 | 久久夜色精品国产噜噜 | 丰满熟女高潮毛茸茸欧洲 | 久久99国产精品久久99无号码 | 国产国语一级毛片在线视频 | 99re5久久在热线播放 | 久久不见久久见免费影院国语 | 99久久免费国产精品热 | 国内精品伊人久久久久网站 | 国产好爽…又高潮了毛片 | 99久久国产综合精品女不卡 | 2020国产精品久久精品 | 人妻精品久久无码专区精东影业 | 特级毛片免费视频观看 | 男人j进女人p免费视频 | 又粗又硬又黄又爽的免费视频 | 国产精品欧美亚洲韩国日本 | 久热久草|