我有一个 EJB-Hibernate 应用程序,目前我正在尝试集成另一个内置在 Spring-Hibernate 中的应用程序。
现在的问题是,因为他们都在使用Hibernate,我很困惑如何整合他们的hibernate配置?
他们两个也使用不同的编写Hibernate配置的方式,即基于Spring的应用程序通过Spring bean和hibernate-cfg.properties文件使用,
而EJB应用程序正在使用标准的hibernate方式(即xxx-cfg.xml和xxx-hbm.xml),
所以我很困惑,我的做法应该是什么? 欢迎任何帮助。
抱歉,我忘了提及版本 - >
在EJB应用程序中 - > EJB 2.0和Hibernate 3.1.3 &安培; Spring Application,Spring 3.x和Hibernate 3.2.6
在Spring-Hibernate Application中,他们有自己的缓存实现,目前都指的是单独的数据源和单独的Db-schema。
我想集成它们,以便两者都有相同的db-schema(我将通过合并它们的模式,即将表等添加到当前模式)和相同的数据源(这里我们使用JBoss来管理数据源连接)通过xxx-ds.xml)
EJB-Hibernate Application我们已经提到了这个数据源的JNDI名称,所以它引用了它。 但是在Spring App中,他们有自己独立的数据源,但是我可以使用相同的JNDI名称来引用它。
请告诉我,我该如何进行这种整合?
答案 0 :(得分:0)
您的信息似乎有点混乱,但我会尝试从您提到的内容中收集。
当您说要集成两个应用程序时,除了使用通用数据源之外,您是否试图在应用程序中删除EJB 2并使用Spring? 这将需要从EJB2迁移到Spring。为此,有很多文章,如this一个。
或者如果您想要的是两个应用程序应该独立存在但应该使用单个模式,那么如您所述,您可以将两个模式合并为一个,在JNDI中注册数据源。然后,use可以在两个不同的应用程序中使用相同的数据源。 EJB2和Spring都可以使用JNDI绑定数据源。
如果两个应用程序独立存在并且其中一个正在使用休眠二级缓存(如您所述),那么您将不得不小心,因为您的缓存将经常失效,因为您的数据库将在两个应用程序之间共享写入数据库。实际上在这种情况下,最好只缓存 ONLY 只读数据,这些数据永远不会改变。