zoukankan      html  css  js  c++  java
  • Spring的datasource配置详解【转】

    一句话,Spring对Hibernate的整合,是在applicationContext.xml中配置sessionFactory来实现的,其中sessionFactory中要装配dataSource。下面就详细介绍dataSource Bean的配置。

    SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。实际上它的设计者的意图是让它能在整个应用中共享。 SessionFactory在hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。session是由sessionfactory来创建,可以创建很多session。Session接口对于Hibernate   开发人员来说是一个最重要的接口。  在Hibernate的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。

    datasource数据源是注入给sessionfactory的,然后关联到session中。先上代码(比较齐全的属性):

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    	destroy-method="close">
    	<property name="driverClassName" value="${driverClassName}" />
    	<property name="url" value="${url}" />
    	<property name="username" value="${username}" />
    	<property name="password" value="${password}" />
    	<!-- 连接初始值,连接池启动时创建的连接数量的初始值 -->
    	<property name="initialSize" value="${initialSize}" />
    	<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
    	<property name="maxActive" value="${maxActive}" />
    	<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 ,0时无限制-->
    	<property name="maxIdle" value="${maxIdle}" />
    	<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
    	<property name="minIdle" value="${minIdle}" />
    	<!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
    	<property name="poolPreparedStatements" value="true" />
    	<!-- 是否对sql进行自动提交 -->
    	<property name="defaultAutoCommit" value="true" />
    </bean>

    1.Bean的id为dataSource,对应的java类是BasicDataSource,这个类适用于配置基本类型的数据库连接,如果要想进行多数据源,那么该Bean对应的java类就得用DynamicDataSource。

     2.destroy-method,表示当该连接销毁时候,会调用BasicDataSource类中的close方法。

       3.driverClassName,url,username,password都是基本配置,这些属性的value值是通过外部的属性配置文件引入,具体怎么引入请参 见

      http://blog.csdn.net/dreamrealised/article/details/9123199中的第三点propertyConfigurer。

       4.接下来的属性与数据库连接池有关,数据库连接池的有关基础知识请参见http://blog.csdn.net/dreamrealised/article/details/9127563

      1)initialSize,连接初始值,连接池启动时创建的连接数量的初始值

      2)maxActive,连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制

      3)maxIdle,最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 ,0时无限制

      4)minIdle,最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请

      5)poolPreparedStatements,是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存

      6)defaultAutoCommit,是否对sql进行自动提交,进行事务管理的时候往往要关闭jdbc的自动提交功能,事务管理详见    

        http://blog.csdn.net/dreamrealised/article/details/9123173

    .配置动态数据源

     将DynamicDataSource Bean加入到Spring的上下文xml配置文件中去,同时配置DynamicDataSource的targetDataSources(多数据源目标)属性的Map映射。

    <bean id="dynamicDataSource" class="datasource.DynamicDataSource" >  

      <property name="targetDataSources">  

            <map>  

                <entry value-ref="dataSourceFrom" key="dataSourceFrom"></entry>  

                <entry value-ref="dataSourceTo" key="dataSourceTo"></entry>  

            </map>  

        </property>  

        <property name="defaultTargetDataSource" ref="dataSourceFrom" />  

    </bean>   

     

    在示例上名称为dataSource这个数据源被配置为动态数据源,它的targetDataSources属性中可以配置其默认管理的数据源。我们将平台原有基础操作的数据源的名称修改为datasource1并委托给该数据源默认持有管理。











  • 相关阅读:
    return break continue
    Web 前端攻防(2014版)
    mysql语句
    MD5加密
    array_pop()将数组最后一个单元弹出(出栈)
    定义一个求和函数
    机器学习:偏差方差权衡(Bias Variance Trade off)
    机器学习:验证数据集与交叉验证
    机器学习:学习曲线
    机器学习:过拟合与欠拟合
  • 原文地址:https://www.cnblogs.com/sylvandu/p/5613427.html
Copyright © 2011-2022 走看看