当前位置: 首页 > 面试题库 >

使用多个数据库架构的JPA

胡翔
2023-03-14
问题内容

我在使用JPA / Spring遇到一个特定问题时遇到了一些麻烦:

如何为实体动态分配架构?

我们有属于模式AD的TABLE1和位于BD下的TABLE2。

@Entity
@Table(name = "TABLE1", schema="S1D")
...

@Entity
@Table(name = "TABLE2", schema="S2D")
...

架构可能不会在注释属性中进行硬编码,因为它取决于环境(Dev / Acc / Prd)。(接受的模式是S1A和S2A)

我该如何实现?是否可以指定这样的占位符:

@Entity
@Table(name = "TABLE1", schema="${schema1}")
...

@Entity
@Table(name = "TABLE2", schema="${schema2}")
...

以便根据驻留在环境中的属性文件替换架构?

干杯


问题答案:

我有一个相同的问题,我用persistence.xml解决了该问题,在该文件中我声明了db shema时引用了所需的orm.xml文件。

<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" >
<persistence-unit name="schemaOne">
    . . .
    <mapping-file>ormOne.xml</mapping-file>
    . . .
</persistence-unit>

<persistence-unit name="schemaTwo">
    . . .
    <mapping-file>ormTwo.xml</mapping-file>
    . . .
 </persistence-unit>
</persistence>

现在您可以为您的特殊模式创建EntityManagerFactory

EntityManagerFactory emf = Persistence.createEntityManagerFactory("schemaOne");


 类似资料:
  • 问题内容: 我正在开发一种多语言软件。就应用程序代码而言,可本地化性不是问题。我们可以使用特定于语言的资源,并拥有与之配合使用的各种工具。 但是,定义多语言数据库架构的最佳方法是什么?假设我们有很多表(100个或更多),每个表可以有多个可以本地化的列(大多数nvarchar列应该可以本地化)。例如,其中一个表可能包含产品信息: 我可以想到三种支持NAME和DESCRIPTION列中的多语言文本的方

  • 问题内容: update 我可以创建我的数据库架构,它会自动添加属性,约束,键等。但是,更新数据库架构又如何呢?如果我从实体中删除了某些属性,hibernate则不会删除它,或者如果我更改了某些约束,则hibernate不会触及已经创建的约束… 那么,有没有一种方法可以使hibernate状态真正更新数据库架构? 谢谢。 问题答案: 我们为自己创建了一个工具,该工具创建了必要的数据库列和表,并将其

  • 问题内容: 我想为ACL创建一个架构;但是,我在实现它的两种方法之间陷入了困境。 我敢肯定,我不想处理级联权限,因为这会导致后端和站点管理员感到困惑。 我想我也可以只和一个角色一起生活。这样的设置将允许在网站扩展时根据需要添加角色和权限,而不会影响现有角色/规则。 首先,我要规范化数据并使用三个表来表示关系。 查询以确定是否允许某处某个用户的查询如下所示: 然后我意识到我将只有大约20个资源,每个

  • 问题内容: 如何指定Spring Boot使用的数据库架构?我正在使用默认的hibernate(=默认)和postgres(但我希望一个通用的解决方案)。我知道如何指定JDBC URL: 但是不幸的是,postgresql不允许在JDBC URL中指定架构。我知道这里有hibernate属性hibernate.default_schema,所以我希望以下属性之一可以工作: 但是不幸的是,他们似乎都

  • 如何指定Spring Boot使用的数据库模式?我使用默认的hibernate(=默认)和postgres(但我希望有一个通用的解决方案)。我知道如何指定JDBC URL: 但不幸的是,postgresql不允许在JDBCURL中指定模式。我知道有hibernate属性,因此我希望以下属性之一能够正常工作: 但不幸的是,它们似乎都没有任何结果。

  • 问题内容: 有人知道如何在hibernate配置中添加另一个数据源,以及如何在自己的DAO中将Spring配置为其自动注入该数据源吗? 这是我的带有一个数据源的代码,可以完美运行,但是我不知道如何添加另一个数据源。我想添加另一个数据源,该数据源是具有与实际数据库不同的表的数据库。 DAO EXAMPLE 问题答案: 我假定你有一组应使用的DAO的和适当的,而其他人应该使用不同的和基于。当然,你需要