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=& ...
随机推荐
- 使用iview如何使左上的添加按钮和右上的搜索框和边框对齐
使用iview如何使左上的添加按钮和右上的搜索框和边框对齐呢? 效果如下: 使用iview自带的Grid 栅格进行布局,但是由于按钮和搜索框的大小不正好是一个栅格的宽度,所以不是很好跳转,且栅格也不支 ...
- Vue实现增删改查功能
简单的表单CURD功能demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- 常用“Request.ServerVariables()”汇总
原文发布时间为:2009-10-25 -- 来源于本人的百度文章 [由搬家工具导入] Request.ServerVariables("REMOTE_ADDR") ...
- manjao linux下玩转arduino
自从入手arduinon差不多半个月了,在window下几乎没有任何问题,下载,编程,编译,上传,运行.几乎没有任何问题.在linux编译成功,上传时下却总是提示找不到libncurses.so.5无 ...
- 修改手機的 input source 及 charger 及 usb 相關電路後,容易忽略的事項
input source 及 charger 需要注意, 是否可以在關機的狀況下充電, 當然 開機充電 是一定要的. usb 部分需要注意, 是否可以在沒有電或者是有電的狀況下 download 程式 ...
- alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号
ret = alloc_chrdev_region(&ndev, 0, 1, "chr_dev"); //分配设备号 alloc_chrdev_region申请一个动态主设 ...
- uva 1442:Cave(贪心)
题意:一个洞穴长n,告诉你每个位置的地面高度和顶部高度,让你往里灌水,要求水不能碰到天花板(但可以无限接近).求最多的水量.(洞穴两边视为封闭) 思路:如果知道一个位置向左看最高可以多高,向右看最高可 ...
- ASP.NET MVC验证所有属性是否合法
1.实现代码: /// <summary> /// 验证所有属性是否合法 /// </summary> /// <param name="modelState& ...
- Web测试框架SeleniumBase
前几天逛GitHub发现一个基于Selenium和unittest单元测试框架的一个测试框架SeleniumBase. Github地址:https://github.com/seleniumbase ...
- 洛谷——P1462 通往奥格瑞玛的道路
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...