1

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

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

我想知道的是初始化后是否有办法做到这一点?我想为用户将要上传的sqlite文件动态创建数据源以提取信息并将其放入服务器上的mysql数据库中。我使用 hibernate 和 jpa 来实现持久性和 orm,并使用 spring 存储库来访问我的所有数据库。我知道我可以使用 jdbc 并使用查询从 sqlite 访问信息,但是我已经编写了很多代码来复制这些数据,因此不必编写所有这些查询并重写它真的很方便代码。

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

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

4

1 回答 1

0

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

于 2012-12-03T16:55:36.437 回答