我正在使用Java persistance和EntityManager类,并将它分配给存储一个应写入数据库的类对象。我的问题是我想使用相同的存储类写入不同的数据库。我的解决方案是编写一个StorageManagerfactory,它有一个包含所有EntityManagers的Map。解决方案看起来很好,直到我查看数据库并意识到所有信息(未完成Map,获得正确的值)被写入同一个数据库(地图中初始化的一个)。
所以我的问题是: 我可以使用使用相同存储类(包含数据库结构的类)的JPA写入不同的数据库吗?
由于
答案 0 :(得分:1)
是,在persistence.xml
中定义多个持久性单元。然后,在注入@PersistenceContext
时,请指定unitName
属性。
答案 1 :(得分:0)
我的解决方案是编写一个StorageManagerfactory,其中包含一个包含所有EntityManagers
的Map
我认为Map
的{{1}}不是个好主意。
但是,应该可以使用
Persistence.createEntityManagerFactory(String, Map
)创建指向N个数据库的N EntityManager
(提到的工厂方法允许传递覆盖其他地方可能已配置的值的其他属性,例如连接URL)以及EntityManagerFactory
在EntityManagerFactory
中。
然后,只需从Map
获取“正确”EntityManagerFactory
(使用您想要的任何键)并获得Map
。