13Spring的数据访问方式

来源:互联网 发布:淘宝账户名怎么修改 编辑:程序博客网 时间:2024/06/16 02:59

传统的JDBC访问技术(效率低)

Jdbc数据访问的一般流程:

      获取数据源  Class.forName(……);

          根据数据源获取数据连接  Connerctionconn=DriverManager.getConnerction(url,name,pwd);

设定事务开始           conn.setAutoCommit(false);Statement st=conn.createStatement();

执行操作 st.executeUpdate(sql);

      提交/回滚    conn.commit();/conn.rollback();

      省略关闭资源

Spring的数据访问

Spring有三种通过XML文件实现DataSource注入的方式:

1.   spring的DriverManagerDataSource

2.   DBCP连接池

3.   Tomcat的JNDI

一、      spring的DriverManagerDataSource(效率和传统的JDBC区别很小)

在XML中配置数据源时,配置该数据源的BeanIddataSource,他的类处于org.springframework.jdbc.datasource包下,名称为DriverManagerDataSource.class

   之后配置其数据库信息,阅读其源代码,可以看到DriverManagerDataSource类提供了四种构造方法。

分别是:

publicDriverManagerDataSource()

    {

    }

public DriverManagerDataSource(Stringurl)

    {

        setUrl(url);

    }

public DriverManagerDataSource(Stringurl, Stringusername, Stringpassword)

    {

        setUrl(url);

        setUsername(username);

        setPassword(password);

    }

public DriverManagerDataSource(Stringurl, PropertiesconProps)

    {

        setUrl(url);

        setConnectionProperties(conProps);

    }

 

   同时DriverManagerDataSource的父类为AbstractDriverBasedDataSource.父类的源代码中主要由四个属性为:

 

    private Stringurl;

    private Stringusername;

    private Stringpassword;

    private PropertiesconnectionProperties;

所以,我们在进行设值注入时,可以根据自己的需求注入相应的数据。

当然根据源码同样可以使用配置文件注入。

接下来使用声明式事务管理。

之后进行声明式事务管理,这里使用的同一包(org.springframework.jdbc.datasource)下的类DataSourceTransactionManager.class

其中有一个属性privateDataSourcedataSource;

所以在配置该Bean时,我们需要将之前配置的dataSource传入进去。

之后配置一个实例Bean进行操作即可。

配置文件代码:

<?xml version="1.0" encoding="UTF-8"?> 

<beansxmlns="http://www.springframework.org/schema/beans" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans   

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

   <!-- 设定DataSource的方法 -->

   <!-- 配置该数据源的BeanIddataSource,他的类处于org.springframework.jdbc.datasource包下,名称为

      DriverManagerDataSource.class-->

   <beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">

      <!-- 配置数据库的信息 -->

      <propertyname="url"><!--数据库连接 -->

         <value>jdbc:mysql://DataBaseUrl/DataBaseName/TableName</value>

      </property>

      <propertyname="username">

         <value>username</value>

      </property>

      <propertyname="password">

         <value>pwd</value>

      </property>

      <!-- 上面是直接设值注入三个属性,还可以使用配置文件注入。

            还可以使用资源文件的方式进行配置。

      -->

   </bean>

   <!-- 接下来设定声明式事务管理,这里使用的是同包(org.springframework.jdbc.datasource)下的

         DataSourceTransactionManager.class类。

   -->

   <beanid="transactionManager"

       class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

      <!-- 将数据源注入 -->

      <propertyname="dataSource">

         <refbean="dataSource"></ref>

      </property>

   </bean>

  

  

</beans>

 

 

在配置datasource时还应该配置DriverClassName

二、      使用DBCP连接池

——DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

在spring中使用DBCP连接池需要用到三个jar包:

      commons-collections.jar包、commons-dbcp.jar、commons-pool.jar

之后在XML配置datasource时,使用dbcp中BasicDataSource类即可。

三、      使用Tomcat的JNDI

使用tomcat的JNDI容易,首先需要在Tomcat的server.xml文件中配置,之后使用jndi的JndiObjectFactoryBean作为datasource。

 

 

0 0
原创粉丝点击