一、主要内容
1、使用JNDI数据源2、使用数据源连接池
3、基于JDBC驱动的数据源
二、前言
1、每种Spring DAO支持方式都需要先配置一个数据源2、Spring提供在Spring上下文中配置数据源Bean的方式
1)通过JNDI查找数据源
2)连接池数据源
3)通过JDBC驱动程序定义数据源
3、对于生产环境中的应用,首选从连接池获取连接的数据源,比如通过应用服务器的JNDI来获取连接池中的数据源
三、使用JNDI数据源
1、JavaEE应用服务器允许通过JNDI获取数据源,优势是数据源完全独立于应用程序而管理2、应用服务器中管理的数据源通常以池的方式组织,具备更好的性能,并且支持系统管理员热切换
3、Spring中,可以像使用Bean那样配置JNDI中数据源的引用,装配到需要的类中
4、位于jee命名空间的<jee:jndi-lookup>元素可用于检索JNDI中的任何对象(包括数据源)并将其用于Spring Bean中
例子:
<jee:jndi-lookup id="dataSource"
jndi-name="/jdbc/MyTwitterDS"
resource-ref="true"/>
1)jndi-name属性指定JNDI中资源的名称2)如果应用程序运行在Java应用程序服务器中,则将resource-ref属性设为true,这样给定的jndi-name会自动添加Java:comp/env前缀
四、使用数据源连接池
1、JNDI查找之后的选项是直接在Spring中配置数据源连接池2、Spring未提供数据源连接池实现,而Jakarta Commons Database Connection Pooling(DBCP)是很好的选择
3、DBCP包括多个提供连接池功能的数据源,其中BasicDataSource最常用,很容易在Spring中配置
例子:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ex"/>
<property name="username" value="system"/>
<property name="password" value="iotek"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="10"/>
</bean>
五、基于JDBC驱动的数据源
1、Spring中通过JDBC驱动定义数据源是最简单的配置方式(没有提供连接池功能),生产环境勿用2、Spring提供了两种数据源对象供选择
1)DriverManagerDataSource:每个连接请求都返回一个新建连接
2)SingleConnectionDataSource:每个连接请求都返回同一个连接
例子:
<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:xe"/>
<property name="username" value="system"/>
<property name="password" value="iotek"/>
</bean>
3、生产环境,应该使用数据源连接池