當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring JDBC数据库连接池设置
生活随笔
收集整理的這篇文章主要介紹了
Spring JDBC数据库连接池设置
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對于任何Java應(yīng)用程序而言, 在Spring框架中設(shè)置JDBC數(shù)據(jù)庫連接池都是很容易的,僅需更改spring配置文件中的一些配置即可。使用Apache Commons DBCP和Commons Pool以及Spring框架的連接池是不錯(cuò)的選擇,但是如果您擁有Web服務(wù)器和托管的J2EE容器,那么請考慮使用J2EE服務(wù)器管理的連接池,在維護(hù),靈活性和靈活性方面都是更好的選擇通過避免在Web應(yīng)用程序類加載器中加載JDBC驅(qū)動程序,還有助于防止tomcat中的java.lang.OutofMemroyError:PermGen空間。此外,通過將JDBC連接池信息保留在服務(wù)器中,可以輕松更改或包括基于SSL的JDBC設(shè)置。 在本文中,我們將看到如何使用Apache Commons DBCP和commons pool.jar 在spring框架中設(shè)置數(shù)據(jù)庫連接池。
本文是我關(guān)于Spring框架和數(shù)據(jù)庫(如帶有Spring Security的J2EE中的LDAP身份驗(yàn)證)和使用Spring Security 管理會話的教程的繼續(xù)。如果您還沒有讀過那些文章,可能會發(fā)現(xiàn)它們很有用。
Spring示例JDBC數(shù)據(jù)庫連接池
Spring框架提供了方便的JdbcTemplate類來執(zhí)行所有與數(shù)據(jù)庫相關(guān)的操作。 如果您不使用Hibernate,那么最好使用Spring的JdbcTemplate。 JdbcTemplate需要一個(gè)數(shù)據(jù)源,該數(shù)據(jù)源是javax.sql.DataSource的實(shí)現(xiàn),如果使用J2EE Web服務(wù)器或應(yīng)用程序服務(wù)器來管理連接池,則可以直接使用spring bean配置或使用JNDI來獲取 。 有關(guān)更多詳細(xì)信息,請參見如何在tomcat和Spring中為基于JNDI的連接池設(shè)置JDBC連接池 。 為了設(shè)置數(shù)據(jù)源,您將需要在applicationContext.xml(彈簧配置)文件中進(jìn)行以下配置: //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連接池配置將創(chuàng)建20個(gè)數(shù)據(jù)庫連接,initializeSize為20,最多增加30個(gè)數(shù)據(jù)庫連接(如果需要,因?yàn)閙axActive為30)。您可以使用Apache DBCP庫提供的不同屬性來自定義數(shù)據(jù)庫連接池。 上面的示例是使用Oracle 11g數(shù)據(jù)庫創(chuàng)建連接池,我們使用oracle.jdbc.driver.OracleDriver與ojdbc6.jar或ojdbc6_g.jar一起提供,以了解有關(guān)如何從Java程序連接Oracle數(shù)據(jù)庫的更多信息,請參見鏈接。在Spring中使用連接池的Java代碼
以下是DAO類的完整代碼示例,該類使用Spring JdbcTemplate使用來自Connection池的數(shù)據(jù)庫連接對數(shù)據(jù)庫執(zhí)行SELECT查詢。 如果您沒有在啟動時(shí)初始化數(shù)據(jù)庫連接池,則在執(zhí)行第一個(gè)查詢時(shí)可能需要一段時(shí)間,因?yàn)樗枰獎(jiǎng)?chuàng)建一定數(shù)量的SQL連接,然后執(zhí)行查詢,但是一旦創(chuàng)建了連接池,后續(xù)查詢的執(zhí)行速度就會更快。 //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;} } 依賴關(guān)系: 1.您需要在類路徑中包含像ojdbc_6.jar這樣的Oracle驅(qū)動程序jar。 2.應(yīng)用程序類路徑中的Apache DBCP和公共池jar。 這就是如何在Spring框架中配置JDBC數(shù)據(jù)庫連接池的全部內(nèi)容。 正如我所說的,使用Apache DBCP庫非常容易。 只需在spring applicationContext.xml中進(jìn)行少量配置就可以了。 如果要在tomcat上配置JDBC連接池(JNDI連接池)并想在spring中使用,請參見此處。 參考: Spring Framework中的JDBC數(shù)據(jù)庫連接池-如何從我們的JCG合作伙伴 Javin Paul在Javarevisited博客上獲得安裝示例 。翻譯自: https://www.javacodegeeks.com/2012/08/spring-jdbc-database-connection-pool.html
總結(jié)
以上是生活随笔為你收集整理的Spring JDBC数据库连接池设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络怎么设置路由器用网线上网要如何设置路
- 下一篇: Spring集成–第2节–更多世界