Spring+Hibernate多数据源配置
2016-05-21 00:22
453 查看
数据源1
数据源2
sessionFactory2
DaoSupportImpl
DaoSupportImpl2
这种做法的关键是在basedao,也就是我的DaoSupportImpl中定义的private SessionFactory sessionFactory;和DaoSupportImpl2中定义的private SessionFactory sessionFactory2;用注解让sessionfactory按照名称注入,与spring配置文件中的sessionfactory名称相对应,然后不同数据源的dao继承不同的DaoSupportImpl。当然,其中DaoSupportImpl使用了匿名类。
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!-- 连接信息 --> <property name="driverClass" value="${driverClass}"> </property> <property name="jdbcUrl" value="${jdbcUrl}"> </property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> </bean>
数据源2
<bean id="dataSourceB" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!-- 连接信息 --> <property name="driverClass" value="${driverClass}"> </property> <property name="jdbcUrl" value="${jdbcUrl2}"> </property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> </bean>sessionFactory1
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> <!-- SQLServerDialect MySQLDialect --> org.hibernate.dialect.SQLServerDialect </prop> <!-- 显示sql语句 --> <prop key="show_sql">true</prop> <!-- 自动建表 <prop key="hibernate.hbm2ddl.auto">update</prop> --> </props> </property> <property name="mappingResources"> <list> <!-- 用户 --> <value>com/hhit/entity/User.hbm.xml</value> <span style="white-space:pre"> </span></list> </property> </bean>
sessionFactory2
<bean id="sessionFactory2" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSourceB" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> <!-- SQLServerDialect MySQLDialect --> org.hibernate.dialect.SQLServerDialect </prop> <!-- 显示sql语句 --> <prop key="show_sql">true</prop> <!-- 自动建表 <prop key="hibernate.hbm2ddl.auto">update</prop> --> </props> </property> <property name="mappingResources"> <list> <!-- 考试监控系统--> <value>com/hhit/entity/TestingControl.hbm.xml</value> <value>com/hhit/entity/TestRoom.hbm.xml</value> </list> </property> </bean>
DaoSupportImpl
public class DaoSupportImpl<T> implements IDaoSupport<T> { @Resource private SessionFactory sessionFactory; private Class<T> clazz; public DaoSupportImpl(){ //使用反射得到T的真实类型 //获取new的对象的泛型的父类类型 ParameterizedType pt= (ParameterizedType) this.getClass().getGenericSuperclass(); //获取第一个类型的真实类型 this.clazz=(Class<T>) pt.getActualTypeArguments()[0]; System.out.println("--->clazz"+clazz); } /** * 获取当前Session对象 * protected子类中可以得到 * @return */ protected Session getSession(){ // if(sessionFactory.getCurrentSession()==null) // return sessionFactory.openSession(); return sessionFactory.getCurrentSession(); } @Override public void save(T entity) { getSession().save(entity); } }
DaoSupportImpl2
public class DaoSupportImpl2<T> implements IDaoSupport<T> { @Resource(name="sessionFactory2") private SessionFactory sessionFactory2; private Class<T> clazz; public DaoSupportImpl2(){ //使用反射得到T的真实类型 //获取new的对象的泛型的父类类型 ParameterizedType pt= (ParameterizedType) this.getClass().getGenericSuperclass(); //获取第一个类型的真实类型 this.clazz=(Class<T>) pt.getActualTypeArguments()[0]; System.out.println("--->clazz"+clazz); } /** * 获取当前Session对象 * protected子类中可以得到 * @return */ protected Session getSession(){ // if(sessionFactory.getCurrentSession()==null) // return sessionFactory.openSession(); return sessionFactory2.getCurrentSession(); } @Override public void save(T entity) { getSession().save(entity); } }
这种做法的关键是在basedao,也就是我的DaoSupportImpl中定义的private SessionFactory sessionFactory;和DaoSupportImpl2中定义的private SessionFactory sessionFactory2;用注解让sessionfactory按照名称注入,与spring配置文件中的sessionfactory名称相对应,然后不同数据源的dao继承不同的DaoSupportImpl。当然,其中DaoSupportImpl使用了匿名类。
相关文章推荐
- spring mvc 中通过controller 传递对象给jsp,并且数据绑定,在修改值后回传对象给controller
- MyEclipse 2014 破解图文详细教程
- MyEclipse 2014 破解图文详细教程
- 关于Struts2 <s:iterator><s:if><s:elseif><s:else>标签备忘录
- springmvc+mybatis整合案例
- java多线程内存可见性1
- SpringMVC+Mybatis框架整合源码 SSM
- 四个月的JAVA学习 收获技能和经验
- java swing JTextPane 按键、长按、回车键等控制
- Java线程学习(一)
- Java集合、反射、内省、注解总结
- 关于 调用 JNI JAR 的说明和注意事项,调用第三方 JAR SDK 和 翻译 安卓 JAVA 代码 的说明 V2015.6.10
- java 实现WebService 以及不同的调用方式
- hibernate+spring中,sql查询的映射问题备忘录
- Java--this关键字
- java按文件夹下日志容量大小删除部分日志
- SpringMVC的注解方式
- Spring容器中Bean的生命周期
- JAVA Socket 实现 UDP 编程
- dubbo 2.5.4 在JDK8下启动错误