springä¸é
ç½®æ°æ®æºçå ç§å¸¸è§æ¹å¼ï¼
#mysql æ°æ®åºé
ç½®(jdbc.properties)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
1.使ç¨springèªå¸¦çæ°æ®æºorg.springframework.jdbc.datasource.DriverManagerDataSourceï¼
æ¹å¼ä¸ï¼
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="/WEB-INF/jdbc.properties" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}" />
pæ è®°éè¦ï¼xmlns:p="
http://www.springframework.org/schema/p"
DriverManagerDataSourceæºç å®ç°ï¼
public class DriverManagerDataSource extends AbstractDriverBasedDataSource {
public DriverManagerDataSource() {
}
public DriverManagerDataSource(String url) {
}
public DriverManagerDataSource(String url, String username, String password) {
}
public DriverManagerDataSource(String url, Properties conProps) {
}
public void setDriverClassName(String driverClassName) {
}
protected Connection getConnectionFromDriver(Properties props) throws SQLException {
}
protected Connection getConnectionFromDriverManager(String url, Properties props) throws SQLException {
}
}
æ¹å¼äºï¼
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
ãã <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
ãã<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" />
ãã<property name="username" value="root" />
ãã<property name="password" value="root" />
</bean>
2.DBCPæ°æ®æºï¼
DBCP(DataBase connection pool)ãæ¯ apache ä¸çä¸ä¸ª java è¿æ¥æ± 项ç®ï¼ä¹æ¯ tomcat 使ç¨çè¿æ¥æ± ç»ä»¶ãåç¬ä½¿ç¨dbcpéè¦2个å
ï¼commons-dbcp.jar,commons-pool.jarç±äºå»ºç«æ°æ®åºè¿æ¥æ¯ä¸ä¸ªé常èæ¶èèµæºçè¡ä¸ºï¼æ以éè¿è¿æ¥æ± é¢å
åæ°æ®åºå»ºç«ä¸äºè¿æ¥ï¼æ¾å¨å
åä¸ï¼åºç¨ç¨åºéè¦å»ºç«æ°æ®åºè¿æ¥æ¶ç´æ¥å°è¿æ¥æ± ä¸ç³è¯·ä¸ä¸ªå°±è¡ï¼ç¨å®ååæ¾åå»ã
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
ãã<property name="driverClassName" value="${jdbc.driverClassName}" />
ãã<property name="url" value="${jdbc.url}" />
ãã<property name="username" value="${jdbc.username}" />
ãã<property name="password" value="${jdbc.password}" />
</bean>
DBCPå®ç°ï¼
class JdbcUtil
{
private static BasicDataSource bds;
static
{
if(bds==null)
{
bds= new BasicDataSource();
}
//åå«è®¾ç½®æ°æ®åºçè¿æ¥åæ°
bds.setDriverClassName();
bds.setUrl();
bds.setUsername();
bds.setPassword();
}
public static Connection getConnection()
{
return bds.getConnection();
}
3.C3P0æ°æ®æº;
C3P0æ¯ä¸ä¸ªå¼æºçJDBCè¿æ¥æ± ï¼å®å®ç°äºæ°æ®æºåJNDIç»å®ï¼æ¯æJDBC3è§èåJDBC2çæ åæ©å±ãç®å使ç¨å®çæHibernateï¼Springçã
ä¾èµjarå
ï¼c3p0-0.9.1.jarãc3p0-0.9.1.2.jarãc3p0-0.9.1-pre6.jar
c3p0ä¸dbcpåºå«ï¼
dbcp没æèªå¨åæ¶ç©ºé²è¿æ¥çåè½
c3p0æèªå¨åæ¶ç©ºé²è¿æ¥åè½
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:Test</value></property>
<property name="user"><value>root</value></property>
<property name="password"><value>root</value></property>
<!--è¿æ¥æ± ä¸ä¿ççæå°è¿æ¥æ°ã-->
<property name="minPoolSize" value="10" />
<!--è¿æ¥æ± ä¸ä¿ççæ大è¿æ¥æ°ãDefault: 15 -->
<property name="maxPoolSize" value="100" />
<!--æ大空é²æ¶é´,1800ç§å
æªä½¿ç¨åè¿æ¥è¢«ä¸¢å¼ãè¥ä¸º0åæ°¸ä¸ä¸¢å¼ãDefault: 0 -->
<property name="maxIdleTime" value="1800" />
<!--å½è¿æ¥æ± ä¸çè¿æ¥èå°½çæ¶åc3p0ä¸æ¬¡åæ¶è·åçè¿æ¥æ°ãDefault: 3 -->
<property name="acquireIncrement" value="3" />
<property name="maxStatements" value="1000" />
<property name="initialPoolSize" value="10" />
<!--æ¯60ç§æ£æ¥ææè¿æ¥æ± ä¸ç空é²è¿æ¥ãDefault: 0 -->
<property name="idleConnectionTestPeriod" value="60" />
<!--å®ä¹å¨ä»æ°æ®åºè·åæ°è¿æ¥å¤±è´¥åéå¤å°è¯ç次æ°ãDefault: 30 -->
<property name="acquireRetryAttempts" value="30" />
<property name="breakAfterAcquireFailure" value="true" />
<property name="testConnectionOnCheckout" value="false" />
</bean>
4.JNDIæ°æ®æºï¼
å¦æåºç¨é
ç½®å¨é«æ§è½çåºç¨æå¡å¨ï¼å¦WebLogicæWebsphereçï¼ä¸ï¼æ们å¯è½æ´å¸æ使ç¨åºç¨æå¡å¨æ¬èº«
æä¾çæ°æ®æºãåºç¨æå¡å¨çæ°æ®æº 使ç¨JNDIå¼æ¾è°ç¨è
使ç¨ï¼Spring为æ¤ä¸é¨æä¾å¼ç¨JNDIèµæºç
JndiObjectFactoryBeanç±»ãä¸é¢æ¯ä¸ä¸ªç®åçé
ç½®ï¼
æ¹å¼ä¸ï¼
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/bbt"/>
</bean>
valueå¼å³JNDIçå称
æ¹å¼äºï¼
<bean id="queueTarget" class="org.springframework.jndi.JndiObjectTargetSource">
ãã<property name="jndiName">
ãããã<value>queue/testQueue</value>
ãã</property>
</bean>
æ¹å¼ä¸ï¼
å¦æä¸ä½¿ç¨JndiTemplateå®ç°InitialContextç¯å¢åéçé
ç½®ï¼åéè¦jndi.propertiesæ件ï¼æ¾å¨classpathä¸ï¼ä¸è¬æ¾å¨srcä¸é¢ï¼ï¼å
容å¦ä¸
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
æ¹å¼åï¼
使ç¨JndiTemplateå®ç°InitialContextç¯å¢åéçé
ç½®ï¼ä¾å¦
<bean id="queueTarget" class="org.springframework.jndi.JndiObjectTargetSource">
<property name="jndiName">
<value>queue/testQueue</value>
</property>
<property name="jndiTemplate">
<ref local="jndiTemplate"/>
</property>
</bean>
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
<prop key="java.naming.provider.url">jnp://localhost:1099</prop>
<prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
</props>
</property>
</bean>