Java 数据源模式-其中';s放置表格';s级方法?

Java 数据源模式-其中';s放置表格';s级方法?,java,c#,php,design-patterns,Java,C#,Php,Design Patterns,在我的公司,我们使用基于“活动记录模式”的模型,模型方法始终与数据库中单个记录的操作相关,例如: 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 p

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

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模型中,我认为这是没有意义的。。你能帮我了解一下处理这种情况最明智/最优雅的方法是什么吗? 我读了一些关于网关和存储库模式的文章,这些可能对这方面很有用,但我想知道是否有人有同样的问题,您是如何解决的


谢谢

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

User.getAllActiveUsers();
另一方面,我建议在以下情况下使用存储库模式

  • 您希望利用单元测试
  • 您可以从多个位置访问数据源,并希望减少复杂性
  • 您需要一个集中的位置来处理缓存
  • 你需要一个清晰的关注点分离
  • 您希望应用域模型以简化复杂的业务逻辑