我需要在运行时在我的应用程序上动态切换数据库。所以这个类要生成我自己的实体管理器:
@ApplicationScoped
public class ApplicationResources {
@PersistenceContext
private EntityManager entityManager;
@Produces
@Default
@RequestScoped
public EntityManager produceEntityManager() {
Map<Object, Object> props = new HashMap<Object, Object>();
props.put(PersistenceUnitProperties.JTA_DATASOURCE, DATABASENAME);
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("PU", props);
return entityManagerFactory.createEntityManager();
}
public void dispose(@Disposes EntityManager entityManager) {
entityManager.close();
}
}
所以我使用@Inject获取entityManager并对数据库执行所有持久性操作。我有两个问题:
我用这种方法看似简单。因为我的申请已经很大了。现在我需要其他数据库中的多个客户端。帮帮我..也许这可能是非常错误的,但是eclipselink的多租户方法似乎非常复杂。我需要多租户的想法和一堆不同的数据。但是,如果我只能在我想要的时间和地点更改连接的数据库,那么它将解决很多问题。
我正在使用Wildfly Server,CDI,Eclipselink,JTA和JSF。
感谢您的帮助。