Spring JDBC数据库连接池设置

对于任何Java应用程序而言, 在Spring框架中设置JDBC数据库连接池都是很容易的,仅需更改spring配置文件中的一些配置即可。使用Apache Commons DBCP和Commons Pool以及Spring框架的连接池是不错的选择,但是如果您拥有Web服务器和托管的J2EE容器,那么请考虑使用J2EE服务器管理的连接池,在维护,灵活性和灵活性方面都是更好的选择通过避免在Web应用程序类加载器中加载JDBC驱动程序,还有助于防止tomcat中的java.lang.OutofMemroyError:PermGen空间。此外,通过将JDBC连接池信息保留在服务器中,可以轻松更改或包括基于SSL的JDBC设置。 在本文中,我们将看到如何使用Apache Commons DBCP和commons pool.jar 在spring框架中设置数据库连接池。

本文是我关于Spring框架和数据库(如带有Spring Security的J2EE中的LDAP身份验证)和使用Spring Security 管理会话的教程的继续。如果您还没有读过那些文章,可能会发现它们很有用。

Spring示例JDBC数据库连接池

Spring框架提供了方便的JdbcTemplate类来执行所有与数据库相关的操作。 如果您不使用Hibernate,那么最好使用Spring的JdbcTemplate。 JdbcTemplate需要一个数据源,该数据源是javax.sql.DataSource的实现,如果使用J2EE Web服务器或应用程序服务器来管理连接池,则可以直接使用spring bean配置或使用JNDI来获取 。 有关更多详细信息,请参见如何在tomcat和Spring中为基于JNDI的连接池设置JDBC连接池 。 为了设置数据源,您将需要在applicationContext.xml(弹簧配置)文件中进行以下配置:
//Datasource connection settings in Spring
<bean id="springDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" ><property name="url" value="jdbc:oracle:thin:@localhost:1521:SPRING_TEST" /><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><property name="username" value="root" /><property name="password" value="root" /><property name="removeAbandoned" value="true" /><property name="initialSize" value="20" /><property name="maxActive" value="30" />
</bean>//Dao class configuration in spring
<bean id="EmployeeDatabaseBean" class="com.test.EmployeeDAOImpl"><property name="dataSource" ref="springDataSource"/>
</bean>
下面的DBCP连接池配置将创建20个数据库连接,initializeSize为20,最多增加30个数据库连接(如果需要,因为maxActive为30)。您可以使用Apache DBCP库提供的不同属性来自定义数据库连接池。 上面的示例是使用Oracle 11g数据库创建连接池,我们使用oracle.jdbc.driver.OracleDriver与ojdbc6.jar或ojdbc6_g.jar一起提供以了解有关如何从Java程序连接Oracle数据库的更多信息,请参见链接。

在Spring中使用连接池的Java代码

以下是DAO类的完整代码示例,该类使用Spring JdbcTemplate使用来自Connection池的数据库连接对数据库执行SELECT查询。 如果您没有在启动时初始化数据库连接池,则在执行第一个查询时可能需要一段时间,因为它需要创建一定数量的SQL连接,然后执行查询,但是一旦创建了连接池,后续查询的执行速度就会更快。
//Code for DAO Class using Spring JdbcTemplate
package com.test
import javax.sql.DataSource;
import org.log4j.Logger;
import org.log4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;/*** Java Program example to use DBCP connection pool with Spring framework* @author Javin Paul*/
public class EmployeeDAOImpl implements EmployeeDAO {private Logger logger = LoggerFactory.getLogger(EmployeeDAOImpl.class);private JdbcTemplate jdbcTemplate;public void setDataSource(DataSource dataSource) {this.jdbcTemplate = new JdbcTemplate(dataSource);}@Overridepublic boolean isEmployeeExists(String emp_id) {try {logger.debug("Checking Employee in EMP table using Spring Jdbc Template");int number = this.jdbcTemplate.queryForInt("select count(*) from EMP where emp_id=?", emp_id);if (number > 0) {return true;}} catch (Exception exception) {exception.printStackTrace();}return false;}
}
依赖关系:
1.您需要在类路径中包含像ojdbc_6.jar这样的Oracle驱动程序jar。
2.应用程序类路径中的Apache DBCP和公共池jar。
这就是如何在Spring框架中配置JDBC数据库连接池的全部内容。 正如我所说的,使用Apache DBCP库非常容易。 只需在spring applicationContext.xml中进行少量配置就可以了。 如果要在tomcat上配置JDBC连接池(JNDI连接池)并想在spring中使用,请参见此处。
参考: Spring Framework中的JDBC数据库连接池-如何从我们的JCG合作伙伴 Javin Paul在Javarevisited博客上获得安装示例 。

翻译自: https://www.javacodegeeks.com/2012/08/spring-jdbc-database-connection-pool.html

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

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

相关文章

BZOJ 3505 [Cqoi2014]数三角形(组合数学)

【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id3505 【题目大意】 给定一个nxm的网格&#xff0c;请计算三点都在格点上的三角形共有多少个。   注意三角形的三点不能共线。 【题解】 我们计算三个点组合的情况&#xff0c;去除横竖三共线&#xff0c;以及斜…

matlab多项式加法运算,matlab多项式运算与代数方程求解解析.ppt

* 多项式运算与代数方程求解 数学软件 Matlab Matlab基础及应用 * 多项式转化为符号表达式&#xff1a;poly2sym 四则运算&#xff1a;conv、deconv 导数与积分&#xff1a;ployder、polyint 求值与零点&#xff1a;polyval、polyvalm、roots、poly 多项式运算 主要内容 代数方…

java.lang.NoClassDefFoundError:如何解决–第3部分

本文是我们的NoClassDefFoundError故障排除系列的第3部分。 正如我在第一篇文章中提到的那样&#xff0c;有许多可能导致NoClassDefFoundError的问题。 本文将重点介绍该问题的最常见原因之一&#xff1a;Java类静态初始化程序块或变量的失败。 将提供一个示例Java程序&#xf…

django实现瀑布流、组合搜索、阶梯评论、验证码

django实现图片瀑布流布局 我们在一些图片网站上经常会看到&#xff0c;满屏都是图片&#xff0c;而且图片都大小不一&#xff0c;却可以按空间排列。默认一个div是占用一行&#xff0c;当想把div里的图片并排显示的时候&#xff0c;只能使用float属性&#xff0c;但是&#xf…

通过ifrmae异步下载文档

//通过ifrmae异步下载文档 function iframeGetFile(opts) {var defaultOpts {filePath: ,onload: function (e) { }}, iframeFile;$.extend(defaultOpts, opts);iframeFile document.createElement("iframe");iframeFile.onload function (e) {defaultOpts.onload…

IO与NIO –中断,超时和缓冲区

假设有一个系统有时需要将文件复制到几个位置&#xff0c;但是这种方式在响应速度至关重要的情况下。 换句话说&#xff0c;如果由于某种原因文件系统过载&#xff0c;并且我们无法在不到一秒钟的时间内写入文件&#xff0c;则应该放弃。 ExecutorService是一项非常方便的工作工…

实验5 matlab程序设计2,实验5 Matlab程序设计2

实验5 Matlab程序设计21. 实验目的&#xff1a;2. 掌握建立和执行M文件的方法&#xff1b; 3. 掌握实现选择结构的方法&#xff1b; 4. 掌握实现循环结构的方法。5. 熟悉利用向量运算来代替循环操作的方法。 6. 实验内容&#xff1a;27. 根据61111 122232n2&#xff0c;求π的近…

【poj1041】 John's trip

http://poj.org/problem?id1041 (题目链接) 题意 给出一张无向图&#xff0c;求字典序最小欧拉回路。 Solution 这鬼畜的输入是什么心态啊mdzz&#xff0c;这里用vector储存边&#xff0c;便于边的排序。瞬间变成STL常数boy →_→。 细节 数组大小把握好。 代码 // poj1041 #i…

记一次ora-1652错误的解决过程

报错现象&#xff1a; 通过v$RMAN_BACKUP_JOB_DETAILS查看备份状态&#xff0c;一直卡着不出结果&#xff0c;很长一段时间之后抛出ORA-1652: unable to extend temp segment by 128 in tablespace &#xff0c;此时查看临时表空间使用情况&#xff0c;发现占用很少&#xff0c…

带有docx4j的Java Word(.docx)文档

几个月前&#xff0c;我需要创建一个包含许多表和段落的动态Word文档。 过去&#xff0c;我曾使用POI来实现此目的&#xff0c;但是我发现它很难使用&#xff0c;并且在创建更复杂的文档时对我来说效果不佳。 因此&#xff0c;对于这个项目&#xff0c;经过一番搜索&#xff0c…

mysql中distinct关键字,MySQL关键字Distinct的详细介绍

DDLPrepare SQL&#xff1a;?Prepare Data&#xff1a;?查询数据如下图所示&#xff1a;第一种情况&#xff0c;使用Distinct关键字&#xff0c;查询单列数据&#xff0c;如下图所示&#xff1a;结果&#xff1a;对 name 字段进行去重处理&#xff0c;符合预期期望&#xff0…

#pragma 预处理指令

Linux C 编程一站式学习 #pragma 预处理指示供编译器实现一些非标准的特性&#xff0c;C 标准没有规定 #pragma 后面应该写什么以及起什么作用&#xff0c;由编译器自己规定。有的编译器用 #pragma 定义一些特殊功能寄存器名&#xff0c;有的编译器用 #pragma 定位链接地址&…

px ,em ,rem

做移动端或者响应式的页面必然需要字体的变化的。这次我就自己的经验来说说他们之间的关系&#xff0c;以及怎么用。 px (绝对单位)是我们常用的就不说了。 em&#xff08;相对单位&#xff0c;相对父级&#xff09; em 指字体高&#xff0c;任意浏览器的默认字体高都是16px。所…

使用JAnnocessor生成Java代码

在本文中&#xff0c;我将向你展示如何生成的代码JAnnocessor通过创建框架Nikolche Mihajlovski 。 在Nikolche的演讲中&#xff0c;我第一次在GeeCON 2012大会上遇到JAnnocessor&#xff1a; “创新和实用的Java源代码生成” &#xff08;幻灯片&#xff09; 。 之后&#xff…

Linq学习笔记(转)

开始Linq前你要知道的 扩展方法 顾名思义就是对现有类进行扩展的的方法&#xff0c;扩展方法可以在不修改现有类的情况下&#xff0c;为现有类增加公共的接口&#xff08;不是C#中的interface&#xff09;。 扩展方法本质上是一个静态方法&#xff0c;不同之处在于它的第一个参…

cass展点不在原位置,cass中打开一副图后,通过绘图处理-——展高程点,怎么之前的图形就不显示了,,只剩下高程点!!...

答&#xff1a;1、进入控制面板&#xff0c;选择“卸载或更改程序”。 2、选中“AutoCAD2006”图标。 3、右击选择“更改”。 4、进入“AutoCAD2006安装程序对话框”&#xff0c;选择“添加/删除功能”单选按钮&#xff0c;点击下一步。 5、在“程序文件”列表中&#xff0c;选…

(二)windows下安装PHPCMS V9

一、准备工作 搭建环境 &#xff1a;参考:Windows下搭建PHP开发环境及相关注意事项PHPCMS V9 &#xff1a;下载适合自己 PHPCMS V9 版本到本地或服务器&#xff0c;下载地址&#xff1a;http://www.phpcms.cn/html/download/说明&#xff1a;官方提供了 2 种不同的编码。包括 G…

JavaFX 2.0布局窗格– HBox和VBox

如果要对JavaFX 2.0中所有不同的布局窗格进行概述&#xff0c;或者想了解有关它们的一些基本知识&#xff0c;请参阅我以前的文章《 JavaFX 2.0中的布局窗格》 。 布局窗格HBox和VBox绝对是JavaFX 2.0中最基本的布局容器。 如您所知&#xff0c;它们的用途是将所有子级布置在一…

flask mysql分页,Flask分页的实现方法

所需环境Flask-SQLAlchemy分页使用Flask-SQLAlchemy提供的pagination()方法。页数是pagination()方法的第一个参数&#xff0c;也是唯一必须的参数。可选参数per_page用来指定每页显示的记录数。参考代码&#xff1a;def index():# ...page request.args.get(page, 1, typeint…

Java中的生成器设计模式

Java 中的 Builder设计模式是一种创建模式&#xff0c;即用于创建对象&#xff0c;类似于 工厂方法设计模式 &#xff0c;这也是创建设计模式。 在学习任何设计模式之前&#xff0c;我建议先找出特定设计模式要解决的问题。 众所周知&#xff0c; 必要性是发明的母亲。 在没有面…