1

我已阅读其他主题,但没有找到好的明确答案

我正在尝试开发一个能够:

1) 在一个单独的 UI 数据库中记录/跟踪用户事件,我们通过 hibernate 使用相同的数据库模式连接该数据库(可能将 connectionString 保存到不同的 oracle 数据库)

2)在运行时登录时,您可以选择一个环境连接到具有相同架构(但数据不同)的三个不同oracle数据库之一

3) 提供正确的 DataSource 以及用户名和密码(从哪里获取这些敏感数据?我不会将其存储在应用程序的某个位置)

我对 Spring 框架相当陌生。我发现这个链接可能是第一个线索。

有什么建议么?

同样使用 Spring 3.1 或 3.2,JDBC 来查询我的 oracle 数据库和休眠映射到我的 UI 数据库。这听起来很混乱,所以我有一张照片:

基础设施

4

2 回答 2

1

只需创建不同的 DAO,每个 DAO 都附加一个单独的持久性单元。在您的 persistence.xml 中,您可以有多个持久性单元,每个都连接到不同的数据库。

例子:

public class Dao1{
@PersistenceContext(unitName="Database1")
protected EntityManager entityManager;

public class Dao2{
@PersistenceContext(unitName="Database2")
protected EntityManager entityManager;


<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="Database1">     
        <exclude-unlisted-classes />                    
        <properties>
        </properties>
    </persistence-unit>

    <persistence-unit name="Database2">     
        <exclude-unlisted-classes />                    
        <properties>
        </properties>
    </persistence-unit>
</persistence>
于 2013-03-13T01:59:02.593 回答
0

您在帖子中提到的链接如下:

1)创建指向不同模式的不同数据源。

2) 扩展 AbstractRoutingDataSource 并创建您自己的数据源,覆盖将提供键值的确定当前查找键方法。在您的情况下,它将返回用户从 UI 中选择的任何内容。同样在您的自定义数据源的 bean 定义中,将所有数据源作为映射传递,其中键作为 UI 上可用的选项。

3) 现在将此数据源分配给您的会话工厂 bean。

于 2013-03-13T07:19:52.127 回答