有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA是适合这种场景的ORM吗?

我们有一个帐户的中央数据库。它包含登录信息和一个名为数据库配置文件的字段。数据库配置文件指示应为帐户使用的数据库连接。例如,我们会有Profile1,Profile2,Profile3。。。简介

如果用户被指示具有Profile1,则他们将使用与被指示为Profile2一部分的用户不同的数据库

我对JPA的理解是,每个概要文件(持久化单元)都需要一个新的EntityManagerFactory,即使数据库都有相同的模式,只是不同的连接信息。因此,如果我们最终拥有100个概要文件,我们将拥有100个实体管理器工厂,这似乎并不理想

我查看了EntityManagerFactory,它似乎不允许您更改数据库连接选项

是我拥有N EntityManagerFactory的唯一选择,如果是这样的话,它们是否会对此产生任何重大后果(如性能不佳)

谢谢你的建议


共 (3) 个答案

  1. # 1 楼答案

    如果您使用的是spring,那么我知道有一种方法可以动态切换数据源。查找更多信息here

  2. # 2 楼答案

    只需使用javax.persistence.Persistence#createEntityMananagerFactory(String,Map),并在映射中提供连接参数。缓存EMF,并明智地使用连接,不要混合来自不同EMF的n个匹配对象

  3. # 3 楼答案

    您所谈论的这类事情已经超出了JPA抽象的范围。像特定连接管理这样的事情通常更特定于提供者。例如,使用Hibernate SessionFactory,您当然可以create new sessions from an aribtraty JDBC connection。将要考虑诸如ID生成方案之类的陷阱(您可能需要使用在DB中生成的序列),并且基本上是针对L2缓存的HOPED,但是仔细编程可以使其工作。p>