Java 具有多租户数据库结构的ActiveJDBC
我有一个多租户数据库体系结构。有没有办法对多个相同的数据库使用一个活动模型 稍微澄清一下:Java 具有多租户数据库结构的ActiveJDBC,java,orm,activejdbc,javalite,Java,Orm,Activejdbc,Javalite,我有一个多租户数据库体系结构。有没有办法对多个相同的数据库使用一个活动模型 稍微澄清一下: 我有一个Foo-exdends模型类,它与Foo\u表一起工作。foo_表在schemaA、schemaB、schameC等中是相同的。我可以使用相同的foo类从不同的模式对这些表中的每一个表进行操作吗?如果您有具有相同模式的数据库,则可以在多个数据库中完全使用相同的模型。事实上,当人们从一个数据库到另一个数据库进行ETL时,通常会这样做 典型的程序如下所示: Base.open(/*connection
我有一个
Foo-exdends模型
类,它与Foo\u表
一起工作。foo_表
在schemaA、schemaB、schameC
等中是相同的。我可以使用相同的foo
类从不同的模式对这些表中的每一个表进行操作吗?如果您有具有相同模式的数据库,则可以在多个数据库中完全使用相同的模型。事实上,当人们从一个数据库到另一个数据库进行ETL时,通常会这样做
典型的程序如下所示:
Base.open(/*connection params*/);
List<Person> johns = Person.where("first_name = ?", "John");
Base.close();
基本上,您将从一个数据库读取数据,但会将其保存到另一个数据库
需要调用
person.setId(null)
,以确保框架生成insert而不是update,请参见。如果您的数据库具有相同的架构,则可以在多个数据库中完全使用相同的模型。事实上,当人们从一个数据库到另一个数据库进行ETL时,通常会这样做
典型的程序如下所示:
Base.open(/*connection params*/);
List<Person> johns = Person.where("first_name = ?", "John");
Base.close();
基本上,您将从一个数据库读取数据,但会将其保存到另一个数据库
需要调用
person.setId(null)
,以确保框架生成insert而不是update,请参见。因此,如果我理解正确,我的问题是,第一次连接到架构时,该架构并不包含模型引用的所有表。这是因为我访问的第一个模式是我用来登录所有用户的schema_auth。我想如果我也在schema_auth中创建我的所有表,那么它就会工作。有更优雅的解决方案吗?我是否可以在需要时根据当前连接重新加载DB元数据?您在原始问题中没有提到任何问题。元数据只读取一次,之后不能重新加载。对于要操作的模型,所有模式都需要有相同的表。我没有提到它,因为我不知道元数据只能读取一次,所以我没有意识到它是相关信息。谢谢你的帮助。我现在明白了,我会更新我的模式,它会工作的!我刚刚想到,这个页面与您的理解相关:因此,如果我理解正确,我的问题是,第一次连接到模式时,该模式并不包含模型引用的所有表。这是因为我访问的第一个模式是我用来登录所有用户的schema_auth。我想如果我也在schema_auth中创建我的所有表,那么它就会工作。有更优雅的解决方案吗?我是否可以在需要时根据当前连接重新加载DB元数据?您在原始问题中没有提到任何问题。元数据只读取一次,之后不能重新加载。对于要操作的模型,所有模式都需要有相同的表。我没有提到它,因为我不知道元数据只能读取一次,所以我没有意识到它是相关信息。谢谢你的帮助。我现在明白了,我会更新我的模式,它会工作的!我刚刚想到,本页与您的理解相关: