2014-01-15 49 views
0

在我的Spring Java Config文件中,我成功使用AbstractRoutingDatasource来切换多个数据库连接。AbstractRoutingDatasource和hibernate.dialect具有多个数据源

public MyRoutingDataSource myRoutingDataSource() { 
    MyRoutingDataSource dataSource = new MyRoutingDataSource(); 
    Map<Object, Object> targetDataSources = new HashMap<Object, Object>(); 
    dataSource.setDefaultTargetDataSource(defaultDataSource()); 
    dataSource.setTargetDataSources(targetDataSources); 
    return dataSource; 
} 

但是,当我想从数据源的PostgreSQL /甲骨文等。(如分页限制/ rowNums)不同,具体的SQL请求,我不得不相关的特定休眠方言

HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
    vendorAdapter.setGenerateDdl(false); 
    vendorAdapter.setShowSql(true); 
    vendorAdapter.setDatabasePlatform("org.hibernate.dialect.PostgreSQL81Dialect"); 

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
    factory.setJpaVendorAdapter(vendorAdapter); 
    factory.setPackagesToScan("fr.appli.model"); 
    factory.setDataSource(myRoutingDataSource()); 

我的问题是如何改变我的EntityManager冬眠方言,当我从AbstractRoutingDatasource改变数据源?是否有可能以编程方式执行?

感谢

+0

能否请您详细阐述这一点?你解决了这个问题吗?我很努力使这种方式与各种方言,但无法找到解决方案。 – Mejmo

回答

0

我认为要实现这一目标,你将需要多个数据源配置文件和每个数据库都有自己的SessionFactory对象在DAO将permof DB操作。

例如:

SessionFactory sessionFactory1 = new Configuration().configure("oracleconfig.cfg.xml").buildSessionFactory(); 

SessionFactory sessionFactory2 = new Configuration().configure("mysqlconfig.cfg.xml").buildSessionFactory(); 
+0

是的,使用DAO可以配置多个数据源条件,以便拥有许多'SessionFactory's。 – Amogh

+0

请更新您的状态/反馈? – Amogh

相关问题