SpringMVC hibernate增加多数据源

(以类SSHE/SYPRO增加多数据源为例作说明)

注:适用与SpringMVC + Hibernate的项目。其它框架的仅仅能说作參考用

配置Spring

新建一个Spring的数据源配置文件,如spring-hibernate-aite.xml

怎么新建文件就不说了

新建的Spring的数据源配置文件的内容:

内容能够先将原有的spring-hibernate.xml全然copy过来,然后做对应改动

A.dataSource的对应改动

  1. <!-- 
  2. 配置数据源
  3. ①bean的name属性,原来是dataSource 如今改成DataSourceAite 
  4. -->
  5. <bean name="dataSourceAite" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  6. <property name="url" value="${jdbc_url_aite}" />
  7. <property name="username" value="${jdbc_username_aite}" />
  8. <property name="password" value="${jdbc_password_aite}" />
  9.  
  10. <!-- 初始化连接大小 -->
  11. <property name="initialSize" value="0" />
  12. <!-- 连接池最大使用连接数量 -->
  13. <property name="maxActive" value="20" />
  14. <!-- 连接池最大空暇 -->
  15. <property name="maxIdle" value="20" />
  16. <!-- 连接池最小空暇 -->
  17. <property name="minIdle" value="0" />
  18. <!-- 获取连接最大等待时间 -->
  19. <property name="maxWait" value="60000" />
  20.  
  21. <property name="validationQuery" value="${validationQuery}" />
  22. <property name="testOnBorrow" value="false" />
  23. <property name="testOnReturn" value="false" />
  24. <property name="testWhileIdle" value="true" />
  25.  
  26. <!-- 配置间隔多久才进行一次检測,检測须要关闭的空暇连接,单位是毫秒 -->
  27. <property name="timeBetweenEvictionRunsMillis" value="60000" />
  28. <!-- 配置一个连接在池中最小生存的时间。单位是毫秒 -->
  29. <property name="minEvictableIdleTimeMillis" value="25200000" />
  30.  
  31. <!-- 打开removeAbandoned功能 -->
  32. <property name="removeAbandoned" value="true" />
  33. <!-- 1800秒,也就是30分钟 -->
  34. <property name="removeAbandonedTimeout" value="1800" />
  35. <!-- 关闭abanded连接时输出错误日志 -->
  36. <property name="logAbandoned" value="true" />
  37.  
  38. <!-- 监控数据库 -->
  39. <!-- <property name="filters" value="stat" /> -->
  40. <property name="filters" value="mergeStat" />
  41. </bean>

B.sessionFactory的对应改动

  1. <!--
  2. 配置hibernate session工厂。
  3. ①bean的id属性,原来的id是sessionFactory 如今改成sessionFactoryAite;
  4. ②dataSource的ref,原来是dataSource 如今改成上边配好新 数据源名字dataSourceAite
  5. -->
  6. <bean id="sessionFactoryAite" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  7. <property name="dataSource" ref="dataSourceAite" />
  8. <property name="hibernateProperties">
  9. <props>
  10. <prop key="hibernate.hbm2ddl.auto">none</prop>
  11. <prop key="hibernate.dialect">${hibernate.dialect}</prop>
  12. <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
  13. <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
  14. </props>
  15. </property>
  16.  
  17. <!-- 自己主动扫描注解方式配置的hibernate类文件 -->
  18. <property name="packagesToScan">
  19. <list>
  20. <value>sy.*.model</value>
  21. </list>
  22. </property>
  23. </bean>

C.事物管理器的对应更改

  1. <!-- 
  2. <span style="white-space:pre"> </span>配置事务管理器 
  3. <span style="white-space:pre"> </span>①bean的name属性,原来是transactionManager 如今改成transactionManagerAite
  4. <span style="white-space:pre"> </span>②sessionFactory的ref,原来是sessionFactory 如今改成上边配好的新名字sessionFactoryAite
  5. <span style="white-space:pre"> </span>-->
  6. <span style="white-space:pre"> </span><bean name="transactionManagerAite" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  7. <span style="white-space:pre"> </span><property name="sessionFactory" ref="sessionFactoryAite"></property>
  8. <span style="white-space:pre"> </span></bean>

D.事物拦截规则的对应更改

  1. <!--
  2. 拦截器方式配置事物
  3. ①用上边新创建的事物管理器来管理事物规则,原来id是transactionAdvice 如今改成transactionAdviceAite
  4. ②改动id。原来id是 transactionAdvice 如今改成 transactionAdviceAite
  5. -->
  6. <tx:advice id="transactionAdviceAite" transaction-manager="transactionManagerAite">
  7. <tx:attributes>
  8. <tx:method name="add*" propagation="REQUIRED" />
  9. <tx:method name="append*" propagation="REQUIRED" />
  10. <tx:method name="save*" propagation="REQUIRED" />
  11. <tx:method name="update*" propagation="REQUIRED" />
  12. <tx:method name="modify*" propagation="REQUIRED" />
  13. <tx:method name="edit*" propagation="REQUIRED" />
  14. <tx:method name="del*" propagation="REQUIRED" />
  15. <tx:method name="delete*" propagation="REQUIRED" />
  16. <tx:method name="remove*" propagation="REQUIRED" />
  17. <tx:method name="repair" propagation="REQUIRED" />
  18. <tx:method name="delAndRepair" propagation="REQUIRED" />
  19.  
  20. <tx:method name="get*" propagation="REQUIRED" read-only="true" />
  21. <tx:method name="find*" propagation="REQUIRED" read-only="true" />
  22. <tx:method name="load*" propagation="REQUIRED" read-only="true" />
  23. <tx:method name="search*" propagation="REQUIRED" read-only="true" />
  24. <tx:method name="datagrid*" propagation="REQUIRED" read-only="true" />
  25.  
  26. <tx:method name="*" propagation="REQUIRED" read-only="true" />
  27. </tx:attributes>
  28. </tx:advice>

E.Spring切面配置的对应更改

  1. <!--
  2. 将新的规则增加Spring的aop
  3. ①改动advice-ref,原来是transactionAdvice 先改成上边新名字transactionAdviceAite
  4. -->
  5. <aop:config>
  6. <aop:pointcut id="transactionPointcut" expression="execution(* sy.*.service..*Impl.*(..))" />
  7. <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdviceAite" />
  8. </aop:config>

保存文件

到这儿,Spring要做的配置基本完事儿了

改动web.xml

要使新建的数据源配置文件spring-hibernate-aite.xml生效,须要在web.xml里边将增加classpath中

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <!-- 增加classpath:spring-hibernate-aite.xml -->
  4. <param-value>classpath:spring.xml,classpath:spring-hibernate.xml,classpath:spring-hibernate-aite.xml</param-value>
  5. </context-param>

保存文件

这个时候。能够启动执行一下项目,看看是否报错,在做下一步操作

新建dao使用新增的一个数据源

有几个dao就有几个数据源

新建daoI

这里能够直接将原来的sy.dao.BaseDaoI.java复制一个到同一包文件夹下,重命名为sy.dao.AiteBaseDaoI.java

新建daoImpl

这里能够直接将原来的sy.dao.impl.BaseDaoImpl.java复制一个到同一包文件夹下。重命名为sy.dao.AiteBaseDaoImpl.java

然后做一些小调整:

  1. /**Repository原来是baseDao 这里改动成aiteBaseDao**/
  2. @Repository("aiteBaseDao")
  3. public class AiteBaseDaoImpl<T> implements AiteBaseDaoI<T> {
  4. private static final Logger logger=Logger.getLogger(AiteBaseDaoImpl.class);
  5.  
  6. /**sessionFactory名字原来是sessionFactory 如今改动成sessionFactoryAite**/
  7. private SessionFactory sessionFactoryAite;
  8.  
  9. public SessionFactory getSessionFactoryAite() {
  10. return sessionFactoryAite;
  11. }
  12.  
  13. @Autowired
  14. public void setAiteSessionFactory(SessionFactory sessionFactoryAite) {
  15. this.sessionFactoryAite = sessionFactoryAite;
  16. }
  17.  
  18. private Session getCurrentSession() {
  19. return this.sessionFactoryAite.getCurrentSession();
  20. }

其它地方都不用改动

dao层写好了之后。能够启动执行下项目,看看有没有异常,没有异常则继续下一步操作

service层的调用

  1. @Service("taskService")
  2. public class TaskServiceImpl implements TaskServiceI {
  3.  
  4. /** 这里用新数据源的Dao就好了。其它的都和原来一致 **/
  5. private AiteBaseDaoI<Ttask> tdao;
  6.  
  7. public AiteBaseDaoI<Ttask> getTdao() {
  8. return tdao;
  9. }
  10.  
  11. @Autowired
  12. public void setTdao(AiteBaseDaoI<Ttask> tdao) {
  13. this.tdao = tdao;
  14. }

到这里,从配置到使用都完毕了,接下来就来完毕你的应用吧

SpringMVC hibernate增加多数据源 (SSHE/SYPRO增加多数据源为例)的更多相关文章

  1. 2017/2/8 hibernate + oracle 实现id的自增 同时 hibernate项目跑起来 会自己增加字段的原因 oracle触发器的使用

    hibernate + oracle 实现id的自增 1.在oracle中先创建一个序列 : 序列语法 如下 create  sequence   (序列名称)seq_student_id minva ...

  2. Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)

    原文地址:https://blog.csdn.net/jiegegeaa1/article/details/81975286 一.工作环境 编辑器用的是MyEclipse,用Mysql数据库,mave ...

  3. springMVC+Hibernate配置

    本文描述下 sypro 项目中使用 springMVC+Hibernate配置,初学SpringMVC做下简单整理解. 1.web项目首先我们要使用 web.xml文件将 spring配置引入进来 & ...

  4. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  5. spring+springmvc+hibernate整合遇到的问题

    spring+springmvc+hibernate整合遇到的问题2016年10月20日 23:24:03 守望dfdfdf 阅读数:702 标签: ssh学习经历的异常exception异常框架更多 ...

  6. IntelliJ IDEA 使用maven 集成SpringMVC+Hibernate

    准备工作: 安装idea intellij 安装jdk1.8,配好环境变量 安装tomcat 7 准备工作完成之后,就开始创建项目了 创建项目 1.File–>new project–>选 ...

  7. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  8. Maven搭建SpringMVC+Hibernate项目详解

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  9. springMVC+Hibernate常用的配置文件

    每次写一个新的web项目时都要写配置文件.比较麻烦,现在把常用到的配置文件记录下来,方便以后使用 web.xml <?xml version="1.0" encoding=& ...

随机推荐

  1. 【CF1073A】Diverse Substring(签到)

    题意:给定一个由小写字母组成的串,要求找出一个子串使得其中出现最多的字母不超过它长度的一半下取整 n<=1e3 思路: #include<cstdio> #include<cs ...

  2. 【转】SqlCacheDependency的使用 强大的功能

    原文发布时间为:2009-10-25 -- 来源于本人的百度文章 [由搬家工具导入]     最近我在忙于研究负载平衡、并发性容错性等性能优化问题,ASP.NET有太多强大的功能等待学习和挖掘。今天, ...

  3. 【Visual Studio】简单内存泄漏检测方法 解决 Detected memory leaks! 问题(转)

    原文转自 http://blog.csdn.net/u011430225/article/details/47840647 我的环境是: XP SP2.VS2003 最近在一个项目中, 程序退出后都出 ...

  4. svn没有"对号"等符号

    [问题描述]调整svn建立好了服务端.安装客户端也检出成功了.但是就是没有对号符号. [解决方案]右键菜单,设置,里面有“图标覆盖”这个选项,把你的文件夹加入进去,然后注销windows用户重新登陆

  5. js中click重复执行

    问题背景:在写一个非常简单添加方法的时候,用onclick事件调用添加方法,点击第一次没问题,第二次会重复执行,经过多次查找资料得知这个状况的解决方案,特意总结一下: 代码如下:点击#spec_for ...

  6. 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉

    写了一会不想写了... A-小Y和小B睡觉觉 链接:https://www.nowcoder.com/acm/contest/57/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制: ...

  7. 第十二届北航程序设计竞赛决赛网络同步赛 J题 两点之间

    题目链接  Problem J 这道题思路还是很直观的,但是有两个难点: 1.题目中说$1<=NM<=10^{6}$,但没具体说明$N$和$M$的值,也就是可能出现: $N = 1, M ...

  8. [Python Cookbook] Numpy: Iterating Over Arrays

    1. Using for-loop Iterate along row axis: import numpy as np x=np.array([[1,2,3],[4,5,6]]) for i in ...

  9. 笔记-迎难而上之Java基础进阶-终

    使用Stream流的方式,遍历集合 import java.util.*; public class StreamDemo{ public static void main(String[] args ...

  10. 输出n行等腰三角形(符号为*)

    输出n行等腰三角形(符号为*) 1. 核心操作 First, 找出每一行的第一个*之前需要的空格个数 规律1:设该等腰三角形一共N行, 那么第n行的第一个*之前需要的空格个数就为N-n个空格 推导过程 ...