SpringMVC hibernate增加多数据源 (SSHE/SYPRO增加多数据源为例)
SpringMVC hibernate增加多数据源
(以类SSHE/SYPRO增加多数据源为例作说明)
注:适用与SpringMVC + Hibernate的项目。其它框架的仅仅能说作參考用
配置Spring
新建一个Spring的数据源配置文件,如spring-hibernate-aite.xml
怎么新建文件就不说了
新建的Spring的数据源配置文件的内容:
内容能够先将原有的spring-hibernate.xml全然copy过来,然后做对应改动
A.dataSource的对应改动
<!--
配置数据源
①bean的name属性,原来是dataSource 如今改成DataSourceAite
-->
<bean name="dataSourceAite" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${jdbc_url_aite}" />
<property name="username" value="${jdbc_username_aite}" />
<property name="password" value="${jdbc_password_aite}" /> <!-- 初始化连接大小 -->
<property name="initialSize" value="0" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="20" />
<!-- 连接池最大空暇 -->
<property name="maxIdle" value="20" />
<!-- 连接池最小空暇 -->
<property name="minIdle" value="0" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" /> <property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" /> <!-- 配置间隔多久才进行一次检測,检測须要关闭的空暇连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间。单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" /> <!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" /> <!-- 监控数据库 -->
<!-- <property name="filters" value="stat" /> -->
<property name="filters" value="mergeStat" />
</bean>
B.sessionFactory的对应改动
<!--
配置hibernate session工厂。
①bean的id属性,原来的id是sessionFactory 如今改成sessionFactoryAite;
②dataSource的ref,原来是dataSource 如今改成上边配好新 数据源名字dataSourceAite
-->
<bean id="sessionFactoryAite" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceAite" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">none</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
</props>
</property> <!-- 自己主动扫描注解方式配置的hibernate类文件 -->
<property name="packagesToScan">
<list>
<value>sy.*.model</value>
</list>
</property>
</bean>
C.事物管理器的对应更改
<!--
<span style="white-space:pre"> </span>配置事务管理器
<span style="white-space:pre"> </span>①bean的name属性,原来是transactionManager 如今改成transactionManagerAite
<span style="white-space:pre"> </span>②sessionFactory的ref,原来是sessionFactory 如今改成上边配好的新名字sessionFactoryAite
<span style="white-space:pre"> </span>-->
<span style="white-space:pre"> </span><bean name="transactionManagerAite" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<span style="white-space:pre"> </span><property name="sessionFactory" ref="sessionFactoryAite"></property>
<span style="white-space:pre"> </span></bean>
D.事物拦截规则的对应更改
<!--
拦截器方式配置事物
①用上边新创建的事物管理器来管理事物规则,原来id是transactionAdvice 如今改成transactionAdviceAite
②改动id。原来id是 transactionAdvice 如今改成 transactionAdviceAite
-->
<tx:advice id="transactionAdviceAite" transaction-manager="transactionManagerAite">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="append*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="repair" propagation="REQUIRED" />
<tx:method name="delAndRepair" propagation="REQUIRED" /> <tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="load*" propagation="REQUIRED" read-only="true" />
<tx:method name="search*" propagation="REQUIRED" read-only="true" />
<tx:method name="datagrid*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
E.Spring切面配置的对应更改
<!--
将新的规则增加Spring的aop
①改动advice-ref,原来是transactionAdvice 先改成上边新名字transactionAdviceAite
-->
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* sy.*.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdviceAite" />
</aop:config>
保存文件
到这儿,Spring要做的配置基本完事儿了
改动web.xml
要使新建的数据源配置文件spring-hibernate-aite.xml生效,须要在web.xml里边将增加classpath中
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 增加classpath:spring-hibernate-aite.xml -->
<param-value>classpath:spring.xml,classpath:spring-hibernate.xml,classpath:spring-hibernate-aite.xml</param-value>
</context-param>
保存文件
这个时候。能够启动执行一下项目,看看是否报错,在做下一步操作
新建dao使用新增的一个数据源
有几个dao就有几个数据源
新建daoI
这里能够直接将原来的sy.dao.BaseDaoI.java复制一个到同一包文件夹下,重命名为sy.dao.AiteBaseDaoI.java
新建daoImpl
这里能够直接将原来的sy.dao.impl.BaseDaoImpl.java复制一个到同一包文件夹下。重命名为sy.dao.AiteBaseDaoImpl.java
然后做一些小调整:
/**Repository原来是baseDao 这里改动成aiteBaseDao**/
@Repository("aiteBaseDao")
public class AiteBaseDaoImpl<T> implements AiteBaseDaoI<T> {
private static final Logger logger=Logger.getLogger(AiteBaseDaoImpl.class); /**sessionFactory名字原来是sessionFactory 如今改动成sessionFactoryAite**/
private SessionFactory sessionFactoryAite; public SessionFactory getSessionFactoryAite() {
return sessionFactoryAite;
} @Autowired
public void setAiteSessionFactory(SessionFactory sessionFactoryAite) {
this.sessionFactoryAite = sessionFactoryAite;
} private Session getCurrentSession() {
return this.sessionFactoryAite.getCurrentSession();
}
其它地方都不用改动
dao层写好了之后。能够启动执行下项目,看看有没有异常,没有异常则继续下一步操作
service层的调用
@Service("taskService")
public class TaskServiceImpl implements TaskServiceI {
/** 这里用新数据源的Dao就好了。其它的都和原来一致 **/
private AiteBaseDaoI<Ttask> tdao;
public AiteBaseDaoI<Ttask> getTdao() {
return tdao;
}
@Autowired
public void setTdao(AiteBaseDaoI<Ttask> tdao) {
this.tdao = tdao;
}
到这里,从配置到使用都完毕了,接下来就来完毕你的应用吧
SpringMVC hibernate增加多数据源 (SSHE/SYPRO增加多数据源为例)的更多相关文章
- 2017/2/8 hibernate + oracle 实现id的自增 同时 hibernate项目跑起来 会自己增加字段的原因 oracle触发器的使用
hibernate + oracle 实现id的自增 1.在oracle中先创建一个序列 : 序列语法 如下 create sequence (序列名称)seq_student_id minva ...
- Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
原文地址:https://blog.csdn.net/jiegegeaa1/article/details/81975286 一.工作环境 编辑器用的是MyEclipse,用Mysql数据库,mave ...
- springMVC+Hibernate配置
本文描述下 sypro 项目中使用 springMVC+Hibernate配置,初学SpringMVC做下简单整理解. 1.web项目首先我们要使用 web.xml文件将 spring配置引入进来 & ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- spring+springmvc+hibernate整合遇到的问题
spring+springmvc+hibernate整合遇到的问题2016年10月20日 23:24:03 守望dfdfdf 阅读数:702 标签: ssh学习经历的异常exception异常框架更多 ...
- IntelliJ IDEA 使用maven 集成SpringMVC+Hibernate
准备工作: 安装idea intellij 安装jdk1.8,配好环境变量 安装tomcat 7 准备工作完成之后,就开始创建项目了 创建项目 1.File–>new project–>选 ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- Maven搭建SpringMVC+Hibernate项目详解
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- springMVC+Hibernate常用的配置文件
每次写一个新的web项目时都要写配置文件.比较麻烦,现在把常用到的配置文件记录下来,方便以后使用 web.xml <?xml version="1.0" encoding=& ...
随机推荐
- 如何用jquery获得td里边的内容
jQuery 中使用 text() 或者 html() 函数可以获取td的内容: $("td").text(); // 或者 $("td").html(); ...
- IntelliJ IDEA如何导入Gradle项目
最近学习Gradle,本文来重点介绍一下,如何使用IntelliJ IDEA导入`Gradle项目的一种方法. 选择菜单栏的File->Open. 在打开的窗口选择对应Gradle项目的buil ...
- vue-cli脚手架每行注释
.babelrc文件 { // 此项指明,转码的规则 "presets": [ // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es ...
- Ncut matlab 代码bug 修复
先说平台: win7 x64,matlab 2012a x64,亲测运行. ncut 是个图像切割方法,以后再回顾具体算法吧,网上很多流程的是Jianbo Shi 这位2000年写的,名字应该是:Da ...
- duilib入门简明教程 -- 完整的自绘标题栏(8) (转)
原文转自:http://www.cnblogs.com/Alberl/p/3343763.html 看了前面那么多教程,相信对duilib已有基本映像了,我们就快马加鞭,做出一个完整的自绘标题 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---45
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---1
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- mysql error 1093 解决办法
mysql> select * from t; +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 ...
- AndroidStudio不重新运行,Debug调试已有进程
们在使用AndroidStudio进行编写Android应用程序的时候,经常需要对抛出的问题进行断点调试跟踪,如果不知道怎样直接调试已经运行的进程.那么调试的效率会非常低下!下面我就来教大家如何快速调 ...
- Linux下Shell文件内容替换(sed)(转)
sed -i 's/被替换的内容/要替换成的内容/g' file #-i为直接修改并保存 参考: http://blog.sina.com.cn/s/blog_7211cb9201019hgd.htm ...