1

我将模型逻辑分为“实体”、“映射器”和“服务”。我首先将我的数据库删除查询放在映射器中,但我越想它,感觉就像是一种服务。

不过我不确定,也许还有一些我不知道的其他层会更有意义。

4

3 回答 3

1

是的,我会将删除逻辑放在服务层中。实体和映射器对象对删除没有任何责任,但服务层是完美的契合。

有诸如 Active Record 之类的模式,其中实体可以与数据库交互(例如在 Ruby on Rails 中),但在您的情况下,请坚持使用服务层。

于 2013-08-15T14:48:52.357 回答
1

将物理更改逻辑放置在数据库的确切位置完全取决于您的设计细节。如果您的“映射器”中有 UPDATE 和 INSERT 语句,那么使用 DELETE 是完全合适的。相反,如果他们在服务中,那么让他们在那里也是完全合适的。

重要的是你的软件是有意义的,而不是它遵循别人的模型。

(虽然,fwiw,我希望您的“实体”类不知道物理数据库,您的“映射器”类将数据库结果集与实体类相互转换,并且您的“服务”类包含所有实际的数据库代码,从 SELECT 和 UPDATE 到 INSERT 和 DELETE。)

于 2013-08-15T14:51:00.133 回答
0

当我从事网络服务工作时,我制作了能够插入、编辑、删除和选择的 ORM 通用类。然后我将这个类子类化。子类具有类似于我的数据库表中的字段的属性。

如果我想删除一些我拥有的对象,我只需调用(int PHP):

$object->delete;

如果我创建一个对象并想将其添加到数据库中,我会调用:

$object = new ObjectModel($pdo); /// subclass of ORM class (TableName: Object)
$object->name = "name";
$object->age = 15;
$object->save();

ORM 类有isLoaded键,当我调用save()它时知道是调用插入还是更新方法。在这种情况下插入。

这个泛型类应该调用所有与数据库相关的方法。

于 2013-08-15T14:49:01.460 回答