• Spring中的数据源配置


    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中相同。
  • 相关阅读:
    常用模块(一)
    面向对象进阶:反射以及内置方法
    面向对象三大特性之多态、封装与装饰器
    面向对象的三大特性之继承
    python之面向对象
    python之内置函数
    python之迭代器,生成器以及列表推导式
    比较好用的linux命令
    使用redission实现分布式信号量以及遇到的一些坑
    linux一些命令
  • 原文地址:https://www.cnblogs.com/alamps/p/2561585.html
Copyright © 2020-2023  润新知