关于数据库调用的困惑在OOP,MVC,(Java)中

时间:2018-05-27 16:44:53

标签: java oop model-view-controller

我们假设我们将类MonkeyBanana的实例存储在数据库中,我们也希望这样做以获得低耦合。

为什么在这些类中保存实例(数据库调用)并不是一种好的做法,是否有更好的/其他方式来处理数据库调用?

我也是新的MVC概念并且查看了一个名为dbhandler的东西:

enter image description here

但我不明白为什么在这些情况下保存数据库调用不会更好。

1 个答案:

答案 0 :(得分:1)

对我而言,关注的是分离问题。每个对象应该只有一个,而且只有一个单一的责任。因此,您的模型可以代表数据库中的每个表。在您的示例中,将有一个Monkey POJO代表数据库中的表猴。我们假设您在POJO中编写了所有SQL查询,前几个月一切正常,然后您的团队决定他们需要迁移到不完全支持的其他数据库供应商你的SQL语法,现在是什么?基本上,您已将代码与数据库供应商结合在一起。处理数据库的代码通常也是密集,冗长和重复的。

此外,通过将数据检索推送到另一层,您还可以拥有一个" db"这可能不是一个数据库,说(坏)示例的几个csv文件,但是你明白了,你的设计更灵活。对于开发人员来说,数据库是一个数据源,他/她通过一个公共的,稳定的interface进行交互,而不需要知道给定数据库的复杂性。

还有一件事,你通常在数据库中执行四种常见操作,即创建,读取,删除,更新(CRUD),因此通过将所有数据库逻辑推送到自己的层,您可以编写更少的代码两个地方:

  1. 数据层:因为您有重复的CRUD操作
  2. 您的POJO是带有setter / getters的简单明文数据
  3. PS:也许打破这两个层(应用程序和数据)的最大好处是,您可以使用ORMs之类的工具自动生成所有数据访问层,然后您只关注开发应用程序和您可以更轻松地交换,修改,更改您的数据库。