我已阅读其他主题,但没有找到一个好的和明确的答案
我正在尝试开发一个能够:
的网络应用程序1)在一个单独的UI数据库中记录/跟踪用户事件,我们通过hibernate与相同的数据库模式连接(可能将connectionString保存到不同的oracle数据库)
2)在运行时,当您登录时,您可以选择一个环境来连接到具有相同模式(但不是相同数据)的三个不同oracle数据库之一
3)使用用户名和密码提供正确的DataSource(从哪里获取这些敏感数据?我不会将其存储在应用程序的某处)
我是Spring框架的新手。我发现这个link可能是第一个领导。
有什么建议吗?
还使用Spring 3.1或3.2,JDBC查询我的oracle数据库和hibernate映射到我的UI数据库。这听起来很混乱所以我有一张照片:
答案 0 :(得分: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>
答案 1 :(得分:0)
您在帖子中提到的链接说明如下:
1)创建指向不同模式的不同数据源。
2)扩展AbstractRoutingDataSource并创建自己的数据源,覆盖将提供key值的determineCurrentLookupKey方法。在您的情况下,它将返回用户从UI中选择的任何内容。同样在自定义数据源的bean定义中,将所有数据源作为map传递,并在UI上使用key作为选项。
3)现在将此数据源分配到会话工厂bean中。