1、使用Spring自带的DriverManagerDataSource
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!—设定dataSourceà
<bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<!—使用SQL Server数据库à
<property name=”driverClassName”>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name=”url”>
<value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
</property>
<property name=”name”>
<value>admin</value>
</property>
<property name=”msg”>
<value>admin</value>
</property>
</bean>
<!—设定transactionManagerà
<bean id=”transactionManager”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
</bean>
<!—示例中DAO-->
<bean id=”bookDAO” class=”com.bookDAO”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
<property name=”transactionManager”>
<ref bean=”transactionManager”>
</property>
</bean>
</beans>
红色部分显示了所使用的类,就是用它来处理数据库连接。
2、使用DBCP连接池
要在Spring中使用DBCP连接池,需要引入spring-framework-2.0-ml\lob\jakarta-commons文件夹中的commons-collections.jar、commons-dbcp.jar和commons-pool.jar。
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!—设定dataSourceà
<bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
<!—使用SQL Server数据库à
<property name=”driverClassName”>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name=”url”>
<value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
</property>
<property name=”name”>
<value>admin</value>
</property>
<property name=”msg”>
<value>admin</value>
</property>
</bean>
<!—设定transactionManagerà
<bean id=”transactionManager”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
</bean>
<!—示例中DAO-->
<bean id=”bookDAO” class=”com.bookDAO”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
<property name=”transactionManager”>
<ref bean=”transactionManager”>
</property>
</bean>
</beans>
红色部分为不同之处,可以看出,Spring为各种不同的数据源提供了统一的方式,下面看使用Tomcat提供的JNDI,有了一些不同。
3、使用Tomcat提供的JNDI
分两步,第一步是配置Tomcat的server.xml;第二步是编写Spring的配置文件。
Tomcat的server.xml
<Context path=”/demo” reloadable=”true” docBase=”c: \eclipse\workspace\demo” workDir=” c: \eclipse\workspace\demo\work”>
<Resource name=”jdbc/opendb” auth=”Container” type=”javax.sql.DataSource” factory=”org.apache.tomcat.dbcp.BasicDataSourceFactory” driverClassName=”com.microsoft.jdbc.sqlserver.SQLServerDriver” url=”jdbc:Microsoft:sqlserver://localhost:1433/stdb”
<!—设定用户名-->
name=”admin”
<!—设定密码à
msg=”admin”
<!--设定最大连接数à
maxActive=”10000”
<!--设定最大空闲时间à
maxldle=”10000”
<!--设定最大等待时间à
maxWait=”10000”
removeAbandoned=”true”
removeAbandonedTimeout=”10”
logAbandoned=”true”
/>
</Context>
Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!—设定dataSourceà
<bean id=”dataSource” class=”org.springframework.jndi.JndiObjectFactoryBean>
<property name=”jndiName”>
<value>jdbc/opendb</value>
/*以下信息在server.xml中已经配置过了,不需要再配置了
<!—使用SQL Server数据库à
<property name=”driverClassName”>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name=”url”>
<value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
</property>
<property name=”name”>
<value>admin</value>
</property>
<property name=”msg”>
<value>admin</value>
</property>*/
</bean>
<!—设定transactionManagerà
<bean id=”transactionManager”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
</bean>
<!—示例中DAO-->
<bean id=”bookDAO” class=”com.bookDAO”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
<property name=”transactionManager”>
<ref bean=”transactionManager”>
</property>
</bean>
</beans>
红色部分为不同之处,可以看出,使用Tomcat提供的JNDI,有了一些不同。第一方式只是Spring包装了一下Jdbc,跟直接使用Jdbc没什么大的区别;后两种采用了连接池技术,比较好。我们也可以看出,三种方式配置基本相同,而作为使用数据源的类,调用方式相同,都是使用基本的依赖注入的方式。
4、使用Hibernate
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!—设定dataSourceà
<bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<!—使用SQL Server数据库à
<property name=”driverClassName”>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name=”url”>
<value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
</property>
<property name=”name”>
<value>admin</value>
</property>
<property name=”msg”>
<value>admin</value>
</property>
</bean>
//在第一种方法的基础上加上Hibernate的配置段就OK了。
<!—使用Hibernate的sessionFactoryà
<bean id=”sessionFactory” class=”org.springframework.orm.hibernate.LocalSessionFactoryBean”>
<property name=”dataSource”>
<ref local=”dataSources”>
</property>
<property name=”mappingResources”>
<list>
<value>com/demo/bo/Book.hbm.xml</value>
</list>
</property>
<property name=”hibernateProperties”>
<props>
<prop key=”hibernate.dialect”>
net.sf.hibernate.dialect.SQLServerDialect
</prop>
<prop key=”hibernate.show_sql”>
true
<prop>
</props>
</property>
</bean>
<!—设定transactionManagerà
<bean id=”transactionManager”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”sessionFactory”>
<ref bean=”sessionFactory”/>
</property>
</bean>
<!—示例中DAO-->
<bean id=”bookDAO” class=”com.demo.bo.BookDAO”>
<property name=”sessionFactory”>
<ref bean=” sessionFactory”/>
</property>
<property name=”transactionManager”>
<ref bean=”transactionManager”>
</property>
</bean>
</beans>
红色部分显示了不同之处,有三点:1)、加入了<bean id=”sessionFactory”>段,引入Hibernate的sessionFactory;2)事务处理的属性由原来的dataSource变成了sessionFactory;3)DAO引用从原来的dataSource变成了sessionFactory。其实就是说,在原来的datasouce之上加了Hibernate这一层,来处理相应的数据访问问题。因此在Spring中引入ORM是很容易的。
Book.hbm.xml和Book.java是通过工具互相生成的,在这里不展示代码了,而Book就是一个POJO。
4、使用iBatis
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!—设定dataSourceà
<bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<!—使用SQL Server数据库à
<property name=”driverClassName”>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name=”url”>
<value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
</property>
<property name=”name”>
<value>admin</value>
</property>
<property name=”msg”>
<value>admin</value>
</property>
</bean>
//在第一种方法的基础上加上iBatis的配置段就OK了。
<!—使用iBatis à
<bean id=”sqlMap” class=”org.springframework.orm.ibatis.SqlMapClientFactoryBean”>
<property name=”configLocation”>
<value>WEB/sqlMapConfig.xml</value>
</property>
</bean>
<!—设定transactionManagerà
<bean id=”transactionManager”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
</bean>
<!—示例中DAO-->
<bean id=”bookDAO” class=”com.demo.bo.BookDAO”>
<property name=”dataSource”>
<ref bean=” dataSource”/>
</property>
<property name=”transactionManager”>
<ref bean=”transactionManager”>
</property>
<property name=”sqlMap”>
<ref bean=”sqlMap”/>
</property>
</bean>
</beans>
红色部分显示了不同之处,主要来看一下其与Hibernate的不同之处,1)同样引入iBatis配置段,不过其mappingResources配置信息放在了sqlMapConfig.xml下,该文件放在WEB-INF下,示例代码如下:
<sqlMapConfig>
<sqlMap resource=”com/demo/bo/Book.xml”>
</sqlMapConfig>
而这其中的Book.xml文件类似于Hibernate中的Book.hbm.xml。
2)事务处理配置段依然引用的是dataSource,而不是sqlMap。
3)在DAO配置段,引用dataSource的同时,又加入了sqlMap引用。
其PO对象——Book.java与Hibernate中相同。
相关推荐
在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时管理多个数据库,比如主库和从库,或者不同类型的数据库。本教程将详细阐述如何在Spring Boot项目中实现这一功能,从数据源配置、实体管理到...
在Spring中,我们通常会创建一个`AbstractRoutingDataSource`的子类,这是一个特殊的数据源,它可以根据一定的规则(如线程绑定、请求参数等)动态地决定使用哪个底层数据源。 以下是一些核心知识点: 1. **`...
数据源(DataSource)在Spring中的配置对于实现持久层操作至关重要。 #### 二、Spring中的数据源配置方式 Spring框架支持多种数据源的配置方式,包括但不限于基于XML的配置、基于注解的配置以及基于Java配置的方式...
在Spring框架中,动态切换数据源是一项重要的功能,它允许应用程序根据业务需求在多个数据库之间灵活切换。这一特性对于多租户系统、读写分离、分布式数据库等场景尤其有用。以下将详细介绍如何实现Spring的动态数据...
在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论多数据源回滚策略。以下是对这些知识点的详细说明: 1. **动态数据源切换**: - 通过AspectJ实现数据源的动态切换,可以设置在...
以下将详细阐述Spring配置各种数据源的方法、原理以及优缺点。 1. **单数据源配置** 单一数据源是最常见的配置,适用于大多数简单应用。在Spring Boot中,可以通过`application.properties`或`application.yml`...
下面将详细介绍Spring动态多数据源配置的相关知识点。 1. **为什么要使用多数据源**: 在实际项目中,可能需要连接到不同的数据库,例如,一个用于存储主业务数据,另一个用于日志记录或数据分析。通过多数据源...
6. **在代码中切换数据源**:在业务代码中,可以通过ThreadLocal或其他方式设置当前数据源的标识,使得在执行SQL操作时,Spring能够根据设定自动选择正确的数据源。 7. **读写分离**:多数据源的一个常见应用场景是...
在Spring框架中,通过JNDI(Java Naming and Directory Interface)可以方便地访问WebLogic服务器中的数据源。这为应用程序提供了高度解耦的数据访问机制,使得应用程序能够更加灵活地管理与数据库的连接。本文将...
在Spring框架中整合多数据源是一项常见的需求,特别是在大型企业应用或者分布式系统中,往往需要连接不同的数据库以满足不同业务场景。本实例将详细介绍如何在Spring中实现这一功能。 首先,我们要理解“多数据源”...
总结,Spring动态切换数据源是企业级应用中不可或缺的功能,它通过灵活的策略和强大的容器管理能力,实现了在运行时无缝地在多个数据源之间切换,从而满足了复杂的应用场景需求。通过深入理解和掌握这一技术,我们...
3. **使用数据源**:现在,我们可以在Spring的应用上下文中通过`@Autowired`注解或者通过`ApplicationContext`获取到数据源,并使用它来创建JdbcTemplate或JPA的EntityManagerFactory等。 ```java @Autowired ...
1. **Spring数据源类型** - **BasicDataSource**: Spring内置的`org.springframework.jdbc.datasource.BasicDataSource`是最常用的数据源实现,它基于Apache Commons DBCP库,提供连接池功能。 - **...
本主题聚焦于在Spring Cloud环境中实现多数据库和多数据源的整合,并且能够动态切换查询的数据库。这是一个复杂但至关重要的需求,特别是在大型企业级应用中,可能需要根据业务逻辑或用户权限连接到不同的数据库。 ...
3. **配置主数据源**:在Spring配置中,定义一个主DataSource,它将用于存储所有数据源的信息。主DataSource会引用上述的自定义DataSource路由类。 4. **配置MyBatis**:接下来,我们需要配置MyBatis的相关bean,如...
Spring多数据源解决方案是针对大型应用中数据分片和分布式数据库管理的需求而设计的一种策略。在这样的场景下,为了提高系统的可扩展性和性能,数据通常会被分散到多个数据库实例上。这种架构如图1所示,每个数据库...
在Spring Boot应用中,多数据源的配置与管理是一项重要的任务,特别是在大型系统中,可能需要连接到不同的数据库以满足不同业务的需求。本教程将详细讲解如何在Spring Boot项目中集成Druid连接池,并利用AOP注解实现...
标题“spring2跨数据源访问”涉及到的是Spring框架在处理多数据源情况下的技术要点,主要涵盖如何在Spring应用中实现对多个数据库的灵活访问。在这个主题中,我们通常会讨论以下几个关键知识点: 1. **多数据源配置...
在Java Spring框架中,多数据源的实现是一个重要的特性,特别是在大型企业级应用中,它允许应用程序连接到多个数据库,从而实现数据隔离、负载均衡或读写分离等高级功能。本教程将深入探讨如何在Spring中配置和管理...
在Spring Boot 2框架中,实现多数据源的配置是一项重要的任务,特别是在大型企业级应用中,可能需要连接到不同的数据库来满足不同业务的需求。在这个项目中,我们有两个主要的数据访问技术:Hibernate和MyBatis,...