首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring MVC项目架构疑虑- DAO、模型、服务

Spring MVC项目架构疑虑- DAO、模型、服务
EN

Stack Overflow用户
提问于 2018-11-16 23:22:46
回答 1查看 75关注 0票数 0

我正在努力为我的Spring项目的架构寻找最佳实践。目前,我们公司有大型数据库模式,用于许多项目,我们只使用一个子集,更准确地说是10个表。我们的应用程序使用DAO层来访问这些表。

表的构造通常使它们在所有其他属性旁边都有活动标志、时间戳和状态标志。

我们的DAO层自动生成jdbcTemplate (我们没有使用任何类型的对象模型)。现在,第一个问题来了,我们的许多DAO层都有常规的CRUD操作+许多“更新方法”,DAO变得臃肿。对于每个新的用例,我们需要在接口和实现中添加新的方法。可视化演示:

代码语言:javascript
复制
public class Employee {
    private Integer id;
    private Integer first;
    private Integer second;
    private Integer third;
    private Integer foreignId;
    private Integer sts;
    private Integer activityMark;
    private Timestamp tstam;
}


public class EmployeeDao {
    Employee get(Integer id);
    Collection<Employee> getAll();
    void remove(Integer id);
    void updateFirst(Integer id);
    void updateSecond(Integer id);
    void updateThird(Integer id);
    void updateSts(Integer id);
    ....
}

另一种选择是使用一种更新方法,但这需要从数据库中进行另一种不必要的查询(选择全部)。

第二个问题是,我们有许多(贫血域)模型(实体)不遵循表格设计-一些复杂的模型具有来自多个表格的属性,一些总结模型-只有一些来自表格的属性。他们的设计也是不一致的,有时我们使用组合和聚合,就像这样:

代码语言:javascript
复制
public class ModelOne {
    private ModelTwo m2;
    private ModelThree m3;
}

并且有时仅具有外键或必需属性。

它们在DAO中也有相应的方法。有时它们有自己的DAO接口和实现,有时它们都与主模型DAO结合在一起。我们试图在以表为中心的DAO和以模型为中心的DAO之间取得平衡。

最后,我们最终得到了几个自动绑定DAO的服务,这违反了单一责任原则。

我读了很多文章,很多讨论,但我觉得它们都不能很好地解决我的问题。说来话长,但我会非常感谢你的任何建议。

EN

回答 1

Stack Overflow用户

发布于 2018-11-16 23:29:24

为什么不只对接收employee对象作为参数的Employee实体使用一个update方法呢?您只需在Employee实例中更新所需的字段。Hibernate将负责更新您想要的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53340731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档