对于任何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

Spring JDBC数据库连接池设置相关推荐

  1. Java jdbc数据库连接池

    1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的 ...

  2. JDBC数据库连接池练习题

    <JDBC数据库连接池练习题> 文章目录 单选题 多选题 判断题 填空题 单选题 1. 下面选项中,能够将游标从当前位置向下移一行的方法是( ). A.next() B.absolute( ...

  3. java jdbc init_Java 的JDBC 数据库连接池实现方法

    虽然 J2EE 程序员一般都有现成的应用服务器所带的JDBC 数据库连接池,不过对于开发一般的 Java Application . Applet 或者 JSP.velocity 时,我们可用的JDB ...

  4. Spring Boot 数据库连接池入门

    本文在提供完整代码示例,可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-19 目录. 原创不易,给点个 Star 嘿,一起冲鸭! 1. 概述 在我 ...

  5. Tomcat 的数据库连接池设置与应用

    2019独角兽企业重金招聘Python工程师标准>>> 1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中: 2.在server.xml中设置数据源,以My ...

  6. JDBC 数据库连接池(JDBCUtils工具类)

    文章目录 前言 一.JDBC作用? 二.获取数据的连接方式 三.Statement/PreStatement执行sql 四.ResultSet结果集 五.JDBC相关API 六.事务 七.批处理 八. ...

  7. 数据库连接池设置多大才合适?

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 4 分钟. 来自:www.jianshu.com/p/a8f653fc0c54 本文内容95%译自这篇文章: https:// ...

  8. 【JAVA】JDBC数据库连接池

    目录 [JDBC] [JDBC--项目示例] [JDBC-API] [DriverManager]--驱动管理类 [Connection]--数据库连接对象 [Statement]--执行 [Resu ...

  9. JDBC——数据库连接池

    目录 前言 一.为什么要使用数据库连接池 二.数据库连接池 2.1 优点 三.多种开源数据库连接池 3.1 C3P0数据库连接池 3.2 DBCP连接池 3.3 Druid(德鲁伊)数据库连接池 总结 ...

最新文章

  1. AGG第四课 局限性
  2. 如何让控件span的id调用ajax_微服务架构之「 调用链监控 」
  3. Linux 文件系统在线扩容实战
  4. 转载的孩子们注意节操哈!!!
  5. 【C++设计技巧】C++中的RAII机制
  6. 怎么查看ubuntu是多少位和常用信息
  7. 小学计算机管理,小学计算机室管理制度
  8. 网络中典型协议--(DNS,输入url后, 发生的事情. ,ICMP,NAT)
  9. ROS在rviz中实时显示轨迹和点
  10. 遇见Flask-Script
  11. 三方集成 - 友盟分享总结
  12. android tv 应用安装器,论Android智能电视盒子必装应用之——QQ音乐TV版
  13. 玩转ECharts制作图表之柱状图
  14. 苹果怎样添加无线网络连接服务器,教你iphone8 icloud连接服务器时出错怎么办及苹果手机如何设置成指定名称的WiFi热点...
  15. Android Emulator has terminated
  16. 谷歌负载均衡Maglev实现简析
  17. 在postgre数据库中,强制删除一个数据库
  18. 留个底 人人乐旁靓房房东出租,我是房东
  19. Android Studio更换背景图片
  20. 如果通过Java来完成大数据开发,需要学习哪些内容

热门文章

  1. servlet session 跟踪用户上次访问时间
  2. Nginx 部署 Vue 项目刷新页面出现404
  3. POJ1321(DFS)
  4. stream分组计数_Java Stream:第2部分,计数始终是计数吗?
  5. jdk11 jdk12_JDK 12附带紧凑数字格式
  6. optionals_Java Optionals获得更具表现力的代码
  7. 什么是openstack_您在OpenStack Summit 2016上错过了什么
  8. lucene 源码分析_Lucene分析过程指南
  9. web ua检测_UA Web挑战会议:针对初创公司的SpringIO
  10. javafx 项目_JavaFX,Jigsaw项目和JEP 253