Spring的datasource配置详解【转】
⼀句话,Spring对Hibernate的整合,是在l中配置sessionFactory来实现的,其中sessionFactory中要装配dataSource。下⾯就详细介绍dataSource Bean的配置。
SessionFactory接⼝负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这⾥⽤到了⼯⼚模式。需要注意的是SessionFactory 并不是轻量级的,因为⼀般情况下,⼀个项⽬通常只需要⼀个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定⼀个SessionFactory。实际上它的设计者的意图是让它能在整个应⽤中共享。 SessionFactory在中实际起到了⼀个缓冲区的作⽤,它缓冲了Hibernate⾃动⽣成的SQL语句和⼀些其它的映射数据,还缓冲了⼀些将来有可能重复利⽤的数据。session是由sessionfactory来创建,可以创建很多session。Session 接⼝对于Hibernate  开发⼈员来说是⼀个最重要的接⼝。在Hibernate的设计者的头脑中,他们将session看作介于数据连接与事务管理⼀种中间接⼝。我们可以将session想象成⼀个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是⼀个持久层管理器,因为它包含这⼀些持久层相关的操作,诸如存储持久对象⾄数据库,以及从数据库从获得它们。
datasource数据源是注⼊给sessionfactory的,然后关联到session中。先上代码(⽐较齐全的属性):
<bean id="dataSource" class="org.apachemons.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}" />
spring怎么读取配置<!-- 连接初始值,连接池启动时创建的连接数量的初始值 -->
<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值是通过外部的属性
配置⽂件引⼊,具体怎么引⼊请参见
  中的第三点propertyConfigurer。
4.接下来的属性与数据库连接池有关,数据库连接池的有关基础知识请参见
  1)initialSize,连接初始值,连接池启动时创建的连接数量的初始值
  2)maxActive,连接池的最⼤值,同⼀时间可以从池分配的最多连接数量,0时⽆限制
  3)maxIdle,最⼤空闲值.当经过⼀个⾼峰时间后,连接池可以慢慢将已经⽤不到的连接慢慢释放⼀部分,⼀直减少到maxIdle为⽌,0时⽆限制
  4)minIdle,最⼩空闲值.当空闲的连接数少于阀值时,连接池就会预申请去⼀些连接,以免洪峰来时来不及申请
  5)poolPreparedStatements,是否对已备语句进⾏池管理(布尔值),是否对PreparedStatement进⾏缓存
  6)defaultAutoCommit,是否对sql进⾏⾃动提交,进⾏事务管理的时候往往要关闭jdbc的⾃动提交功能,事务管理详见   
.配置动态数据源
将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并委托给该数据源默认持有管理。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。