相关疑难解决方法(0)

从具有相同持久性单元的多个Db读取?

我需要一些帮助来使用相同的Persistence单元为多个db配置多个连接.

它们都具有相同的架构.因此,我想使用相同的持久性单元/ DAO等,并且不想设置10个EntityManagers,10 Persistence xml等.有没有办法做到这一点?这是我当前的配置:

  <persistence-unit name="PersistenceUnit-c1" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="hibernate.show_sql" value="${hibernate-show-sql}"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.SybaseDialect" />
            <property name="hibernate.c3p0.min_size" value="${hibernate-c3p0-min-size}" />
            <property name="hibernate.c3p0.max_size" value="${hibernate-c3p0-max-size}" />
            <property name="hibernate.c3p0.timeout" value="${hibernate-c3p0-timeout}" />
            <property name="hibernate.c3p0.max_statements" value="${hibernate-c3p0-max-statements}" />
            <property name="hibernate.c3p0.idle_test_period" value="${hibernate-c3p0-idle-test-periods}" />     
        </properties>
Run Code Online (Sandbox Code Playgroud)
        <class>com.domain.TktOrder</class>
        <exclude-unlisted-classes/>
    </persistence-unit>
Run Code Online (Sandbox Code Playgroud)

我也使用Spring/hibernate来设置我的上下文:

    <bean id="EntityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    p:persistenceUnitName="PersistenceUnit-c1" 
    p:dataSource-ref="DataSource">
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
            p:showSql="${hibernate-show-sql}" 
            p:generateDdl="false" 
            p:databasePlatform="org.hibernate.dialect.SybaseDialect" />
    </property>
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
</bean>

<bean id="DataSource" 
    class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" 
    p:driverClass="net.sourceforge.jtds.jdbc.Driver"
    p:jdbcUrl="jdbc:jtds:sybase://url.net:port;DatabaseName=db_1"
    p:user="user" 
    p:password="password"
    />
Run Code Online (Sandbox Code Playgroud)

最后我使用:

@PersistenceContext(unitName="PersistenceUnit-c1")
public void setEntityManager(EntityManager …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa

14
推荐指数
1
解决办法
2万
查看次数

如何使用一个DataSource以编程方式更改Spring中的数据库?

我想看看在Spring中使用一个DataSources的最佳方法是什么,但能够从Java代码中切换数据库?下面是我的两个DataSource,它们转到相同的数据库服务器但是不同的数据库.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
    <property name="url"
              value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE_EMS" />
    <property name="username" value="userid" />
    <property name="password" value="derp" />
</bean>

<bean id="dataSourceMain" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
    <property name="url"
              value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE" />
    <property name="username" value="userid" />
    <property name="password" value="derp" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我将它们绑定到各自的bean但是我正在查看我的遗留代码,并且使用2个单独的bean实现它将非常尴尬.有关如何在需要时使用一个DataSource和切换数据库的想法/想法吗?

java spring datasource jdbc

11
推荐指数
1
解决办法
2万
查看次数

使用Spring JdbcTemplate时如何动态更改数据库/目录

考虑一种情况,其中所有客户端数据都存储在其自己的数据库/目录中,而所有此类数据库都存储在单个RDBMS(客户端数据)中。主数据(例如客户端等)保存在另一个RDBMS(主数据)中。我们如何通过来动态访问客户端数据RDBMS中的特定数据库JdbcTemplate

DataSource在客户端数据RDBMS中定义每个数据库,然后按照此处的建议动态选择一个数据库,对我们来说不是一个选择,因为数据库是动态创建和销毁的。

我基本上需要类似JDBC的东西,Connection.setCatalog(String catalog)但是我没有找到类似Spring的东西JdbcTemplate

java mysql spring-jdbc jdbctemplate spring-data

6
推荐指数
2
解决办法
4924
查看次数

具有相同实体和存储库的多个数据源

目前正在开发一个项目,其中我的 Spring Boot 项目需要利用同一数据库服务器中的多个数据源或架构。我发现了几个在 Spring Boot 中教授多个数据源配置的教程,其中实体 foo 存在于数据源 A 中,而 bar 存在于数据源 B 中,如下所示。

https://scattercode.co.uk/2016/01/05/multiple-databases-with-spring-boot- and-spring-data-jpa/ https://scattercode.co.uk/2013/11/18/ spring-data-multiple-databases/ https://medium.com/@joeclever/using-multiple-datasources-with-spring-boot-and-spring-data-6430b00c02e7

但我的用例是实体 foo 和 bar 存在于多个模式中,我想使用单个实体和存储库来访问所有模式。数据不会在所有模式中复制。它是在它们之间划分的。

因此,如果我需要搜索用户 John Doe,我必须遍历架构 1,如果找不到他,请转到下一个架构。

我已经尝试了上述所有教程(即使它们与我的用例不符),希望我可以破解它以使其工作,就像概念证明一样。我还研究了 AbstractRoutingDataSource ( http://fizzylogic.nl/2016/01/24/make-your-spring-boot-application-multi-tenant-aware-in-2-steps/http://kimrudolph. de/blog/spring-datasource-routing)和 MultiTentancy,但这两者都谈论在任何时间点访问单个模式。我只需要一些指导或链接即可完成此任务。

提前致谢。

spring multi-tenant spring-data-jpa spring-boot

6
推荐指数
1
解决办法
8708
查看次数