Настроить пул соединений с базой данных 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 JdbcTemplatepackage com.testimport 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 .