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并委托给该数据源默认持有管理。



时间: 2024-10-01 12:56:53

Spring的datasource配置详解【转】的相关文章

基于Spring Cloud的微服务构建学习-3 Spring Cloud Eureka配置详解

配置详解 在Eureka的服务治理体系中,主要分为服务端与客户端.服务端为服务注册中心,而客户端为各个提供接口的微服务应用.当部署高可用注册中心时,每个服务端也已经成为了客户端,因此,在使用Spring Cloud Eureka的过程中,我们所做的配置内容几乎都是对Eureka客户端配置进行的操作,所以了解这部分的配置内容,对于用好Eureka非常有帮助. 而Eureka服务端更多类似于一个现成产品,大多数情况下,我们不需要修改它的配置信息. Eureka客户端配置分类 服务注册相关配置,包括服

spring sessionFactory 属性配置详解,applicationContext中各种属性详解

1.Bean的id为sessionFactory,对应的类为AnnotationSessionFactory,即采用注解的形式实现hibernate. 2.hibernateProperties,配置hibernate的属性 1)hibernate.dialect,配置Hibernate方言,可以让Hibernate使用某些特定的数据库平台的特性,具体的dialect大全: 结下不同数据库的该属性的值如下表.其中属性值得格式:{hibernatejar的全名}.dialaect.{对应数据库}D

Spring之——c3p0配置详解

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51162560 今天,我们就来详细谈谈Spring中的c3p0配置问题,好了,不耽搁大家的时间,我们直接进入主题,请看下面的具体配置文件信息: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/

Spring之依赖配置详解

通过以上的学习,对spring容器和DI的概念应该比较清晰了,DI(依赖注入)作为spring的核心,spring当然提供了一套完善的机制来进行依赖注入.前篇文章从概念上介绍了依赖注入,本篇着重学习spring依赖注入的方法,这里主要采用xml的方式. 基本注入 构造器注入和设值注入是依赖注入的两种主要方式,spring对此有很完善的实现,下面首先以代码的形式进行简要的说明. 构造器注入 Spring容器通过调用bean的构造函数(可能带有几个参数,每个参数代表一个依赖)完成构造器注入.通过静态

spring+springMVC+JPA配置详解

SpringMVC是越来越火,自己也弄一个Spring+SpringMVC+JPA的简单框架. 1.搭建环境. 1)下载Spring3.1.2的发布包:Hibernate4.1.7的发布包(没有使用hibernate的API,只是使用了它对JPA的实现):下载 BoneCP 连接池框架及其依赖的jar,下载缓存框架ehcache,全部所用到的jar包如下: ? antlr-2.7.7.jar bonecp-0.7.1.RELEASE.jar bonecp-provider-0.7.1-rc2.j

spring与shiro配置详解

1.加入shiro相关依赖的jar包 pom.xml部分内容如下: 1 <dependency> 2 <groupId>org.apache.shiro</groupId> 3 <artifactId>shiro-spring</artifactId> 4 <version>1.3.2</version> 5 </dependency> 6 <dependency> 7 <groupId>

spring 定时任务参数配置详解

注:本文摘自<Quartz Cron 触发器 Cron Expression 的格式>http://blog.csdn.net/yefengmeander/article/details/5985064 非常感谢作者!!! Quartz Cron 表达式支持到七个域  :秒 分 时 日 月 周 年(顺序万不可乱!!!) 名称          是否必须             允许值                 特殊字符  秒                  是             

spring声明式事务配置详解

spring声明式事务配置详解 君子不器 2013年06月16日 编程世界 5273次阅读 查看评论 理解Spring的声明式事务管理实现 本节的目的是消除与使用声明式事务管理有关的神秘性.简单点儿总是好的,这份参考文档只是告诉你给你的类加上@Transactional注解,在配置文件中添加('<tx:annotation-driven/>')行,然后期望你理解整个过程是怎么工作的.此节讲述Spring的声明式事务管理内部的工作机制,以帮助你在面对事务相关的问题时不至于误入迷途,回朔到上游平静

spring基于通用Dao的多数据源配置详解【ds1】

spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种方式和资源文件冲突:扫描映射文件的话,SqlSessionFactory的bean名字必须是sqlSessionFactory 他读不到sqlSessioNFactory2或者其他名字,最终解决方法如下: 1.在项目中加入如下类MultipleDataSource.java ? 1 2 3 4 5