有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数据源模式将表级方法放在哪里?

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

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

谢谢


共 (1) 个答案

  1. # 1 楼答案

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

    User.getAllActiveUsers();
    

    另一方面,我建议在以下情况下使用存储库模式

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