Настроить пул соединений с базой данных JDBC в среде Spring легко для любого приложения Java, просто изменив несколько настроек в файле конфигурации Spring. Если вы пишете основное приложение Java и не работаете на каком-либо веб-сервере или сервере приложений, таком как Tomcat или Weblogic, Managing Database Пул соединений с использованием Apache Commons DBCP и Commons Pool вместе со средой Spring — хороший выбор, но если вы можете позволить себе роскошь иметь веб-сервер и управляемый J2EE-контейнер, рассмотрите возможность использования пула соединений, управляемого J2EE-сервером, это лучший вариант с точки зрения обслуживания, гибкости и также помогает предотвратить java.lang.OutofMemroyError: пространство PermGen в tomcat , избегая загрузки драйвера JDBC в загрузчик классов веб-приложения. Кроме того, хранение информации о пуле соединений JDBC на сервере упрощает изменение или включение настроек JDBC через SSL. В этой статье мы увидим, как настроить пул соединений с базой данных в среде Spring с использованием Apache commons DBCP и commons pool.jar.
Эта статья является продолжением моих руководств по Spring Framework и базам данных, таким как Аутентификация LDAP в J2EE с Spring Security и управление сеансами с использованием безопасности Spring. Если вы не читали эту статью, вы можете найти их полезными.
Пример Spring JDBC Пул соединений с базой данных
Spring Framework предоставляет удобный класс JdbcTemplate для выполнения всех операций, связанных с базой данных. если вы не используете Hibernate, то лучше использовать Spring JdbcTemplate. JdbcTemplate требует DataSource, который является реализацией javax.sql.DataSource, и вы можете получить его напрямую, используя конфигурацию Spring Bean или JNDI, если вы используете веб-сервер J2EE или сервер приложений для управления пулом соединений. Дополнительные сведения см. В разделе Как настроить пул соединений JDBC в tomcat и Spring для пулов соединений на основе JNDI. Для настройки источника данных вам потребуется следующая конфигурация в вашем файле applicationContext.xml (весенняя конфигурация):
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
//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 соединений с базой данных, так как initialSize равно 20 и идет до 30 соединений с базой данных, если maxActive равно 30. Вы можете настроить пул соединений с базой данных, используя различные свойства, предоставляемые библиотекой Apache DBCP. Выше приведен пример создания пула соединений с базой данных Oracle 11g, и мы используем oracle.jdbc.driver.OracleDriver поставляется вместе с ojdbc6.jar или ojdbc6_g.jar, чтобы узнать больше о том, как подключить базу данных Oracle из программы Java, см. Ссылку.
Java-код для использования пула подключений в Spring
Ниже приведен полный пример кода класса DAO, который использует Spring JdbcTemplate для выполнения запроса SELECT к базе данных с использованием соединения с базой данных из пула соединений. Если вы не инициализируете пул соединений с базой данных при запуске, это может занять некоторое время при выполнении первого запроса, поскольку ему нужно создать определенное количество соединений SQL, а затем выполнить запрос, но после создания пула соединений последующие запросы будут выполняться быстрее ,
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//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); } @Override public 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. вам нужно включить jar драйвера оракула как ojdbc_6.jar в ваш classpath.
2. Apache DBCP и jar пула общих ресурсов в пути к классам приложений.
Это все о том, как настроить пул соединений с базой данных JDBC в среде Spring . Как я уже сказал, использовать библиотеку Apache DBCP довольно просто. Просто несколько настроек весной applicationContext.xml, и вы готовы. Если вы хотите настроить пул соединений JDBC на tomcat (пул соединений JNDI) и хотите использовать его весной, см. Здесь.
Ссылка: Пул соединений с базой данных JDBC в Spring Framework — Пример настройки от нашего партнера по JCG Джавина Пола в блоге Javarevisited .