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

spring连接jdbc

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



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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

W10常用快捷键

I 问题背景&#xff1a; 操作电脑总是移动鼠标&#xff0c;比较麻烦。最方便的是操作键盘&#xff0c;完成操作 II 常用快捷键&#xff1a; 浏览器&#xff1a;参考博客Chrome浏览器的便捷使用方式_一只积极向上的小咸鱼的博客-CSDN博客 1 ctrlshift组合按键 Shift键是上档…

插入时间信息

问题描述 在进行文本编辑的时候&#xff0c;往往需要记录当天日期。而Typora等软件没有及时插入时间的快捷方式。 方法 搜狗收入法提供快速记录时间的方式 1. 在中文输入法模式中输入rq&#xff08;汉语拼音日期的首字母&#xff09;&#xff0c;选项卡自动显示今日日期,可…

通过委托增强Spring数据存储库

我最近写了几篇有关Kotlin代表团的文章。 通过这样做&#xff0c;我实现了一种将其应用于Spring Data存储库的有用方法。 这将使Spring Data在提供定制路线的同时继续散布一些魔力。 这篇文章中显示的代码在Kotlin中&#xff0c;但仍然与Java有关。 这篇文章使用R2DBC&#xf…

git常见错误 —— broken pipe

Broken pipe git push会出现一个问题&#xff1a;就是关于文件的大小&#xff01;因为github的默认大小是100M&#xff0c;如果你的文件大于100M&#xff0c;那么你就不能成功 会出现这个&#xff1a;fatal: fatal: sha1 file <stdout> write error: Broken pipe The rem…

activemq网络桥接_ActiveMQ –经纪人网络解释–第4部分

activemq网络桥接在前面的第3部分中 &#xff0c;我们已经看到ActiveMQ如何帮助将远程使用者与本地使用者区分开来&#xff0c;这有助于确定从消息生产者到使用者的较短路径。 在第4部分中&#xff0c;我们将研究如何在远程代理上负载均衡并发使用者。 让我们考虑一些高级配置…

sublime 添加注释模块

问题背景&#xff1a; 规范的程序需要对函数进行注释&#xff0c;常用的开发工具如IDEA、VS Code都对注释模板有很好的支持。本博客介绍Sublime下支持模块注释功能的设置。 一 安装 一、安装方法 1.安装docblocker插件 mac CmdShiftP -> Install Package -> docblock…

只读副本和Spring Data第3部分:配置两个实体管理器

我们之前的设置可以正常工作。 我们现在要做的是进一步发展&#xff0c;并配置两个单独的实体管理器&#xff0c;而不会影响我们之前实现的功能。 第一步是将默认的实体管理器配置设置为主要配置。 这是第一步 package com.gkatzioura.springdatareadreplica.config; import…

Win+E快速打开我的电脑方式设置方式

W10运用快捷键WinE快速打开我的电脑设置方式

JMetro版本11.6.5和8.6.5发布

再一次问好。 设置了SDK中所有JavaFX控件的样式以及其他一些不存在的样式以及其他库中的其他样式。 后续版本将涉及调整JMetro现有样式或从第三方库的其他控件添加其他样式。 此版本就是这种情况。 这是新功能&#xff1a; 3种新的控件样式&#xff1b; 调整JMetro现有样式&a…

Chrome浏览器的便捷使用方式

截取转载于B站视频【全套教程】高效玩转Chrome浏览器&#xff0c;丰富你的上网体验_哔哩哔哩_bilibili中的脑图文件&#xff0c;便于之后的熟悉使用。 脑图链接 https://naotu.baidu.com/file/5a5332eee10dd903cc084d49189cd2behttps://naotu.baidu.com/file/5a5332eee10dd90…

Sublime查看已经安装的插件

蓝色框图内显示已经安装的插件

activemq网络桥接_ActiveMQ –经纪人网络解释–第3部分

activemq网络桥接现在&#xff0c;我们已经在本博客系列的第1部分和第2 部分中了解了ActiveMQ网络连接器的基础&#xff0c;在第3部分中&#xff0c;我们将研究ActiveMQ如何平衡连接到代理网络的使用者。 介绍 当可以无序处理队列中的消息时通常使用并发使用者&#xff0c;通常…

Word样式的导入与导出

1 样式的介绍 样式&#xff0c;也就是Word中各级标题的格式。合理的设置样式模板&#xff0c;可以帮助更方便的进行文本编辑。 2 样式的导入 具体情形为将“文档标准模板.dotm”的内容应用于“新建Microsoft Word文档”。 按照图示进行操作 【 如果应用模板为文件内的样式…

word将一个文档的样式导入到另一个文档

一、背景 在word中编辑文档时&#xff0c;经常需要定义一个样式给特定格式的文本使用&#xff0c;如标题1&#xff0c;标题2等&#xff0c;而有时需要在一个新文档A中使用一个旧文档B中定义好的样式。 二、操作步骤 1、打开旧文档B&#xff0c;选择上方标签栏的"样式&quo…

Spring Boot应用程序浪费了内存

内存是当今世界上被广泛浪费的资源之一。 由于编程效率低下&#xff0c;令人吃惊的&#xff08;有时是“令人震惊的”&#xff09;内存浪费被浪费了。 我们看到这种模式在多个企业应用程序中重复出现。 为了证明这种情况&#xff0c;我们进行了一项小型研究。 我们分析了著名的…

Win10灵活使用快速访问

I 快速访问视图 位置在winE 左侧窗口&#xff0c;点击可快速到达某个特定的文件夹。作用类似于快捷方式&#xff0c;操作简单。 II 关闭自动添加 默认是显示经常使用的文件夹。这使得窗口内文件夹较乱。 通过以下设置&#xff0c;关闭自动显示 1. 2.把框内√去掉 III 固定文…

Win10搜索文件后新窗口打开

I 问题描述 windows搜索后&#xff0c;对”文件“右击只有”打开文件位置“&#xff1b;对”文件夹“右击只有”在新窗口中打开“和”打开文件夹位置“ 1.如果点击”打开文件位置“ 或 ”打开文件夹位置“后&#xff0c;搜索的窗口页面就不见了&#xff1b;直接跳转到”那个“…

activemq网络桥接_ActiveMQ –经纪人网络解释–第2部分

activemq网络桥接在此博客中&#xff0c;我们将看到双工网络连接器如何工作。 在上一部分中&#xff0c;我们从broker-1和broker-2创建了一个网络连接器。 我们能够看到&#xff0c;当代理2上有一个使用者使用队列“ foo.bar”时&#xff0c;代理1上的队列“ foo.bar”的消息如…

Win10鼠标拖拽移动文件

拖动操作共有三种响应模式&#xff0c;分别是&#xff1a;移动、复制、创建快捷方式。 在默认情况下&#xff0c; 纯拖动操作——同盘移动&#xff0c;异盘复制拖动时按住shift键——移动拖动时按住ctrl键——复制拖动时按住alt键 或 同时按住ctrl和shift键——创建快捷方式

Apache Lucene中的并发查询执行

Apache Lucene是一个出色的并发纯Java搜索引擎&#xff0c;如果您愿意&#xff0c;它可以轻松地使服务器上的可用CPU或IO资源饱和。 “典型” Lucene应用程序的并发模型在搜索时每个查询一个线程&#xff0c;但是您知道Lucene还可以使用多个线程同时执行一个查询以大大减少最慢…