0 0

切换数据源的时候切换方言的问题??????0

现在做一个项目Sqlserver数据库和oracle数据库进行切换。
仅仅的进行数据库切换,很好搞。继承AbstractRoutingDataSource类,实现如下:
public class DynamicDataSource extends AbstractRoutingDataSource {
	
	private static final Logger logger = Logger.getLogger(DynamicDataSource.class);
	
	@Override
	protected Object determineCurrentLookupKey() {
		String customerType = ContextHolder.getCustomerType();  
		logger.debug("\r\n DynamicDataSource return DateSource key with [" + customerType + "].");
		return customerType;
	}
	
	
}

public class ContextHolder {
	
	private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();    
        
    public static void setCustomerType(String customerType) {    
      contextHolder.set(customerType);    
    }    
        
    public static String getCustomerType() {    
      return (String) contextHolder.get();    
    }    
        
    public static void clearCustomerType() {    
      contextHolder.remove();    
    }    

}


程序中通过ContextHolder.setCusTomerType("**")来切换数据源。
问题是切换数据源的时候,方言无法切换。在spring配置文件中已经指定了方言。
我去hibernate官网看了怎么切换方言,官网提供了DialectResolver这个类来解析方言,spring中这样配置
<prop key="hibernate.dialect_resolvers">org.hibernate.dialect.resolver.StandardDialectResolver</prop>
,在spring中不配置方言,程序会根据这个类自动解析当前的方言,但是切换数据源之后,获取的方言没有改变,help !!!!!!!!!!!!

1个答案 按时间排序 按投票排序

0 0

这个不行  因为在初始化hibernte时就确定了方言 因为:要生成一些hql(这些需要根据方言生成  比如分页)

建议多sessionFactory吧

2013年4月02日 18:25

相关推荐

    SpringBoot整合Sharding-JDBC,实现从数据库加载sharding-jdbc数据源,实现多种数据库数据源切换,数据库方言动态切换

    完成以上配置和代码编写后,可以通过单元测试或集成测试验证数据源切换和方言切换的功能。确保在不同数据源之间切换时,查询和操作数据无误,且SQL方言正确适配。 通过上述步骤,我们就能在SpringBoot项目中成功...

    java+hibernate双数据源配置

    在这个切面中,通过`@Around`注解的方法来动态切换数据源。通常,我们可以根据方法的注解、请求参数或其他业务逻辑来决定使用哪个数据源。 5. **使用数据源** - 在业务代码中,我们可以使用`@Autowired`注解注入两...

    Springboot实现mybatis多数据源配置

    在实际使用中,我们可以在需要切换数据源的地方调用`DataSourceContextHolder.setDataSource()`方法。 最后,为了使MyBatis能识别我们的多数据源,我们需要在MyBatis的配置类中指定数据源: ```java @...

    多数据源MultiSessionFactory

    本篇文章将详细讲解"多数据源MultiSessionFactory"这一主题,以及如何在Spring中通过动态配置数据源来实现数据源的灵活切换,并利用`MultiSessionFactory`重写sessionFactory。 首先,理解多数据源的概念。在很多...

    Spring动态多数据源配置实例Demo

    3. **配置切换数据源的策略**:在实际应用中,我们需要一种机制来决定何时以及如何切换数据源。这通常通过AOP(面向切面编程)实现,创建一个自定义的拦截器,比如`dataSourceInterceptor`,该拦截器会在特定方法...

    Qml动态语言切换QmlLanguage.7z

    在QML中,语言切换可能会涉及处理一些兼容性和类型转换问题,因为不同的语言可能有不同的数据类型和API。因此,确保你的QML元素和脚本代码设计得足够灵活,以适应不同语言的差异是很重要的。 此外,为了实现更复杂...

    springboot02

    - **动态切换数据源**:在业务逻辑中,我们可能需要根据条件或事务范围动态选择使用哪个数据源。这可以通过AOP(面向切面编程)实现,定义一个切面,在方法执行前后根据规则切换数据源。 - **事务管理**:在多数据...

    spring-数据库元

    通过上述分析,我们可以看到Spring框架下多数据源配置及动态数据源切换的实现并不复杂,但在实际应用中还需要注意一些细节问题,比如事务的一致性管理、数据源的负载均衡等。此外,随着技术的发展,未来还可能出现更...

    带小图标jQuery图片切换特效.zip

    在这里,JavaScript将与jQuery结合,负责处理逻辑,如计算当前显示的图片索引,以及更新图片源以实现切换效果。 4. **CSS**:层叠样式表(CSS)用于描述HTML或XML(包括如SVG、MathML等各种XML方言)元素的呈现。在...

    JS左右切换广告位代码

    7. `js`目录:可能包含JavaScript源代码文件,例如一个名为`script.js`的文件,其中包含了实现广告位切换的逻辑代码。 8. `data`:这个目录可能包含了广告位的数据,例如图片的URL、展示顺序等。如果数据量较大或...

    CSS六边形缩略图点击切换大图.rar

    7. **数据存储与交换**:如果缩略图和大图的源是动态加载的,可能涉及到JSON对象或其他数据格式来存储图片信息,然后使用JavaScript进行解析和显示。 8. **事件委托**:如果缩略图数量众多,使用事件委托可以提高...

    4009高清大图背景切换服装企业整站模板5398_企业网站模板PHP整站源码.zip.7z

    该资源是一个针对服装企业的高清大图背景切换的网站模板,基于PHP编程语言,包含了整站的源代码。这个模板设计的主要目标是为服装行业的企业提供一个专业且视觉效果出色的在线展示平台。下面将详细阐述相关知识点。 ...

    Flash+xml焦点图切换代码

    标题中的“Flash+xml焦点图切换代码”指的是使用Flash技术和XML数据格式实现的一种动态焦点图切换效果。这种技术常用于网页设计中,以展示一组图片或内容,并通过平滑的过渡效果进行自动或手动切换,提升用户体验。 ...

    entityFramework源代码

    4. **Entity SQL**:这是EF提供的一种SQL方言,用于在EF上下文中执行查询,可以避免直接编写SQL,保持代码与数据库的解耦。 5. **ADO.NET Entity Data Model Designer (EDM Designer)**:这是一个可视化工具,帮助...

    J2EE(SSH整合)开发笔记.doc

    - **使用JNDI连接数据源**:通过Java命名和目录接口(JNDI)配置数据源,便于在不同的环境中切换数据库,提高代码的灵活性和可移植性。 #### 构建jar包文件的顺序 1. **构建Spring框架**:将所有必需的Spring jar...

    ShardingSphere 5.1.2 版源码

    5. **动态数据源**:动态加载和切换数据源,实现高可用性和弹性扩展。 6. **治理中心**:提供统一的数据库治理平台,监控、管理分布式数据库集群,支持灰度发布、故障切换等高级功能。 7. **插件化架构**:...

    网页特效源代码

    在实际应用中,记得考虑不同浏览器的兼容性问题,确保特效在主流浏览器上都能正常工作。 总的来说,这个资源包是网页开发者宝贵的参考资料,无论是初学者还是经验丰富的开发者,都能从中学习到实用的网页特效实现...

    笔记本、台式机电源及电池属性检测Delphi代码..rar

    在IT领域,编程语言Delphi是一种非常强大的对象 Pascal方言,由Embarcadero Technologies开发,广泛用于构建桌面应用程序。这个“笔记本、台式机电源及电池属性检测Delphi代码”是一个示例项目,旨在帮助开发者了解...

Global site tag (gtag.js) - Google Analytics