前一段时间我终于设法获得了一个使用Hibernate工作的OSGi服务。 我目前的任务是将此服务更改为托管服务。基本上,我应该在运行时更改我的配置以决定2个数据库,但我不确定如何。我得到了这样的SessionFactory:
ServiceReference<?> ref = context.getServiceReference(SessionFactory.class.getName());
SessionFactory factory = (SessionFactory) context.getService(ref);
对于我的知识,这是在OSGi中获取SessionFactory的唯一可行方法,但整个配置都在org.hibernate.osgi.OsgiSessionFactoryService
完成。
我的问题是,有没有办法手动配置我的SessionFactory,比如更改使用过的hibernate.cfg.xml或使用.setProperty("connection.url", "...")
?
我能想象的唯一解决方案是使用经过大量修改的OsgiSessionFactoryService
,但这似乎有些过分......
有没有人有更优雅的方法解决这个问题?