2015-09-04 53 views
0

我开始开发OpenXava应用程序来替换旧系统(使用Firebird数据库的Delphi程序),但新应用程序将Postgres作为数据存储。我可以拥有连接到OpenXava中不同数据库的实体吗?

我现在正在开发的应用程序需要对旧Firebird数据库中的2个表进行只读访问(因此不会对它们进行任何修改!),其他所有内容都将位于新的Postgres数据库中(基本上,数据库和约4从另一个)。

最终所有的东西都会被移动到Postgres,但是当整合正在发生时,我需要做这样的事情。

有没有办法在OpenXava中做到这一点?任何建议如何解决这个问题将不胜感激。

+0

考虑通过PostgreSQL的做,使用像'odbc_fdw'外国数据包装。因此,对于应用程序来说,它们看起来像只是PostgreSQL表,PostgreSQL在后台从Firebird中获取数据。 –

回答

1

您可以在persistence.xml中针对旧数据库定义第二个持久性单元,然后当您需要访问旧数据库时,使用JPA syntaxt而不是XPersistence.getManager()来获得一个针对您的旧管理器的管理器数据库,即:

EntityManagerFactory f = 
    Persistence.createEntityManagerFactory("firebird"); 
EntityManager manager = f.createEntityManager(); 
manager.getTransaction().begin(); 

// Your code 

manager.getTransaction().commit(); 
manager.close(); // You have to close 
相关问题