运行时动态数据源配置后的Spring MVC

时间:2012-12-03 16:44:02

标签: spring hibernate sqlite jpa 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中定义我的数据源,我只是使用我的抽象路由数据源在它们之间切换。

1 个答案:

答案 0 :(得分:0)

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