连接池是一种操作,其中系统会预先初始化将来要使用的连接。 这样做是因为在使用时创建连接是一项昂贵的操作。 在本文中,我们将学习如何在Spring JDBC中创建C3P0连接池(某人未使用休眠)。

Pom.xml

<dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version>
</dependency>

Spring上下文文件(applicaitonContext-persistance.xml)

现在,我们需要为spring准备一个JDBC上下文文件。 我们需要使用所有凭据为数据库定义一个数据源。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><!-- Employee DB data source. --><bean id="employeeDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass" value="${jdbc.driverClassName}" /><property name="jdbcUrl" value="${jdbc.employee_db_url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxPoolSize" value="${jdbc.maxPoolSize}" /><property name="minPoolSize" value="${jdbc.minPoolSize}" /><property name="maxStatements" value="${jdbc.maxStatements}" /><property name="testConnectionOnCheckout" value="${jdbc.testConnection}" /></bean><context:component-scan base-package="com.javapitshop.dao"></context:component-scan>
</beans>

在上面的示例中,我们为Employee DB创建了一个C3P0数据源,其中包含所有凭据和适当的参数。 上下文文件中未提及所有凭据和设置。 我一直在使用专用的属性文件。 现在,可以在任何DAO类中自动将此bean作为DataSource对象连接。

jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.employee_db_url=jdbc:mysql://localhost:3306/employee
jdbc.username=root
jdbc.password=root
jdbc.maxPoolSize=50
jdbc.minPoolSize=10
jdbc.maxStatements=100
jdbc.testConnection=true

BaseDao类

DAO基础类将定义我们需要在所有子类中使用的任何抽象方法或任何常用功能。 我们可以根据需要将其抽象化或根据需要添加任何内容。 另请注意,我已经重载了其构造函数以实现Logging。 现在,每个子类都需要提供其类定义。

package com.icsmobile.faadplatform.dao;import org.apache.log4j.Logger;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;/*** Its the parent Dao class of the all the daos defined in the System.** @author JavaPitShop*/
public class BaseDao extends SimpleJdbcDaoSupport {//common logger for all the classes in the dao layerprotected Logger logger;/*** * @param daoClass*/public BaseDao(Class<?> daoClass) {logger = Logger.getLogger(daoClass);}}

EmployeeJdbcDao.Java

EmployeeJdbcDao正在扩展BaseDao,并在其构造函数中自动装配了我们在上下文Bean中定义的“ employeeDataSource”。

@Repository
public class EmployeeJdbcDAO extends BaseDao {/*** Instantiates a new employee jdbc dao.** @param userDataSource the employee data source*/@Autowiredpublic ApplicationJdbcDAO(DataSource employeeDataSource) {super(ApplicationJdbcDAO.class);this.setDataSource(userDataSource);}public EmployeeBO getEmployeeById(final int employeeId) {logger.debug("getEmployeeById(" + employeeId + ")");EmployeeBO employeeBO = null;StringBuilder queryString = new StringBuilder();queryString.append(" SELECT ").append( "*" ) .append(" FROM employee ").append(" WHERE employee_id = ? ");Object[] parameterList = { employeeId };logger.debug(queryString.toString());// execute querySqlRowSet dataRow = getJdbcTemplate().queryForRowSet(queryString.toString(), parameterList);if (dataRow.next()) {// create application objectemployeeBO = getEmployeeBusinessObjectFromRowSet(dataRow);}return employeeBO;}
}

翻译自: https://www.javacodegeeks.com/2014/05/adding-c3po-connection-pooling-in-spring-jdbc.html

在Spring JDBC中添加C3PO连接池相关推荐

  1. spring连接jdbc_在Spring JDBC中添加C3PO连接池

    spring连接jdbc 连接池是一种操作,其中系统会预先初始化将来要使用的连接. 这样做是因为在使用时创建连接是一项昂贵的操作. 在这篇文章中,我们将学习如何在Spring JDBC中创建C3P0连 ...

  2. 在 Spring Boot 中使用 HikariCP 连接池

    上次帮小王解决了如何在 Spring Boot 中使用 JDBC 连接 MySQL 后,我就一直在等,等他问我第三个问题,比如说如何在 Spring Boot 中使用 HikariCP 连接池.但我等 ...

  3. spring-boot中使用druid连接池

      最近因为项目的要求,需要在spring-boot中配置druid连接池,数据库是Oracle,并且是多数据源的连接池,特地写下我的配置经历.   用的框架是spring-boot,数据库是orac ...

  4. hikaridatasource连接池_细数springboot中的那些连接池

    hello~各位读者新年好! 回想起前几天在部署springboot项目到正线时,线上环境要求jdk7,可项目是基于jdk8开发的,springboot也是用的springboot2以上的版本,可以说 ...

  5. Hibernate中配置C3P0连接池

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转自:h ...

  6. hikaridatasource连接池_完美!细数SpringBoot中的那些“连接池”

    推荐阅读: 47天时间,洒热血复习,我成功"挤进"了字节跳动(附Java面试题+学习笔记+算法刷题)​zhuanlan.zhihu.com 拼多多终面竟被"Out&quo ...

  7. 如何在 Java 应用程序中设置 HicariCP 连接池

    在本教程中,我们将介绍 HikariCP 并展示如何在 Java 应用程序中设置 HicariCP 连接池.在我们的应用程序中,我们向 MySQL 数据库发出请求. HikariCP是可靠的高性能 J ...

  8. Spark中使用c3p0连接池

    在Spark实时或离线计算的应用程序中,有时候需要将计算结果保存到数据库中,为了高效这里使用批量插入,结合c3po连接池,说明一下使用方法. 数据计算完成后,在foreachRDD中批量插入数据,因为 ...

  9. Spring Boot 中使用 Hikari连接各类数据源

    Spring Boot 中使用 Hikari连接各类数据源 1,连接hive集群 HikariConfig中各属性设置 {"allowPoolSuspension": false, ...

最新文章

  1. js实现搜索记录列表
  2. anaconda基本概念,常用命令
  3. VMware虚拟机Ubuntu系统与物理机Windows 7系统共享文件夹
  4. Direct Byte Buffer的操作
  5. php7.1 aes 加密解密,PHP7.1中AES加密解密方法 mcrypt_module_open()替换方案
  6. java random array_java復習之Math、Random、Arrays工具類
  7. 【Flink】Flink No JAAS configuration section named Client ERROR:Authentication failed
  8. 杭电1203I NEED A OFFER!
  9. python中函数参数*args和**kw的区别
  10. centos 6 mysql 5.7.13 编译安装_Centos 6.5系统下编译安装PHP 7.0.13的方法
  11. spring boot / cloud (九) 使用rabbitmq消息中间件
  12. 几种典型的智慧农业物联网解决方案
  13. 标准之争:影响 IPv6 部署的经济学因素
  14. 计算机病毒1000字,《大鱼海棠》观后感1000字
  15. 一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法
  16. 算法初探 之 排序算法
  17. Java常见问题之HashMap扩容、树化、死链
  18. Python | 如何运行.ipynb文件?如何安装Jupyter notebook?
  19. 中国软件缺少核心技术 自主创新是关健
  20. 装上这几款IDEA插件,专业程度提升妥妥的

热门文章

  1. matlab盒子分形维数_分形:盒子维数
  2. php 正则获取html标签,php正则取嵌套html标签
  3. 架构师成长之路(内附推荐书籍)
  4. hibernate教程_Hibernate多对多教程
  5. 大端字节序码流中取出2字节_产生字节码
  6. java动态代理_Java动态代理
  7. 项目经理升职了是啥_什么是升职率?
  8. webresource_Jersey WebResource –标头不附加
  9. jdk8集合类流_JDK 8中的流驱动的集合功能
  10. jooq sql_使用jOOQ和JavaFX将SQL数据转换为图表