数据源模式——将表's级方法放在其中

本文关键字:方法 在其中 模式 将表 数据源 | 更新日期: 2023-09-27 18:04:31

在我的公司,我们使用基于"活动记录模式"的模型,模型方法总是与数据库中单个记录的操作相关,例如:

Class User {
    int id;
    string Name;
    public boolean Find (id); // SQL / ORM to return the object based on the user's Id;
    public boolean Save (); // SQL / ORM to save / update a user
    public boolean Delete (); // SQL / ORM to delete a user.
}
// Create the user "John"
Set objUser = new User ();
objUser.Name = "John";
objUser.Save ();

我的问题是,关于数据库实体"User",我们有表级而不是记录的方法,例如方法"getAllActiveUsers",它返回所有活动用户的查询对象。这种类型的情况最终在自己的ActiveRecord模型,这在我看来没有意义。你能告诉我如何处理这种情况是最明智的吗?我读了一些关于网关和存储库模式的东西,可能对这个有用,但我想知道是否有人有同样的麻烦,你是如何解决的。

谢谢! !

数据源模式——将表's级方法放在其中

我不是活动记录模式的大粉丝,但我认为使用它的一致方式是将getAllActiveUsers添加到User类:

User.getAllActiveUsers();
另一方面,我建议在以下情况下使用存储库模式:
  • 你想利用单元测试。
  • 您可以从多个位置访问数据源,并且希望提取复杂性。
  • 你需要一个集中的地方来处理缓存。
  • 你想要一个清晰的关注点分离。
  • 您希望应用域模型来简化复杂的业务逻辑。