gpt4 book ai didi

java - 具有 Multi-Tenancy 数据库结构的 ActiveJDBC

转载 作者:行者123 更新时间:2023-12-02 03:09:13 25 4
gpt4 key购买 nike

我有一个 Multi-Tenancy 数据库架构。有没有办法将一个 Activity 模型用于多个相同的数据库?

一点说明:

我有一个与 foo_table 一起使用的 Foo exdends Model 类。 foo_tableschemaA、schemaB、schameC 等中是相同的。我可以使用相同的 Foo 类对来自不同的每个表进行操作吗模式?

最佳答案

如果您拥有具有相同架构的数据库,则完全可以在多个数据库中使用相同的模型。事实上,当人们从一个数据库到另一个数据库进行 ETL 时,通常会这样做。

典型的程序如下所示:

Base.open(/*connection params*/);
List<Person> johns = Person.where("first_name = ?", "John");
Base.close();
  • Base.open() 打开一个连接并将其附加到当前线程。
  • 下一行Person.where(..)在线程上找到一个连接,并使用它来选择记录。
  • Base.close() 在当前线程上查找连接并将其关闭。

此外,ActiveJDBC 模型首次在 JVM 中使用时,将期望在当前线程上建立连接,并将从当前架构中提取元数据。这将确保:

这意味着在任何给定时间,模型都假设它连接到的数据库具有与用于获取元数据相同的结构。

接下来,这可能就是您想要的:

Base.open(/*connection params for DB1*/);
List<Person> johns = Person.where("first_name = ?", "John");
Base.close();

Base.open(/*connection params for DB2*/);
for(Person person:johns){
person.set("first_name", "Bill").setId(null).saveIt();
}
Base.close();

本质上,您将从一个数据库读取数据,但将其保存到另一个数据库。

需要调用person.setId(null)来确保框架生成插入,而不是更新,请参阅http://javalite.io/surrogate_primary_keys .

关于java - 具有 Multi-Tenancy 数据库结构的 ActiveJDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41305012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com