2012-12-03 46 views
1

如果您查看下面的链接,您可以非常清楚地看到如何在代码中定义您的数据源和实体管理器工厂,这些代码在配置期间运行。运行时配置动态数据源配置Spring MVC

http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/#d0e993

我想知道的是,如果有初始化后这样做的呢?我想动态地创建数据源到sqlite文件,用户将上传提取信息并将其放入服务器上的MySQL数据库。我使用hibernate和jpa来实现持久化和orm,并且使用Spring存储库来访问所有数据库。我知道我可以使用jdbc并使用查询访问sqlite以外的信息,但是我已经有很多代码能够复制这些数据,因此不必编写所有这些查询并重写码。

我可以使用我在迭代之间进行迭代的文件池,以便我可以用上载的文件替换那些sqlite文件并访问那些预定义的文件,但这不是很理想。我宁愿能够上传文件,将其声明为新的sqlite数据源,然后将其提供给我的抽象路由数据源,以便我可以在我的数据源之间切换。

现在我正在定义我的数据源在xml中,我只是使用我的抽象路由数据源在它们之间切换。

回答

0

我会尝试在包装中注入EntityManagerFactory实例,并让所有需要EntityManager的代码调用此包装。包装器还将提供一个可以接受由所有参数构造的SQLite文件或DataSource的方法,通过反射设置EntityManagerFactory实例的数据源。因此,来自此EntityManagerFactory的后续EntityManager实例将使用相同的持久性单元,但针对新的SQLite数据源。