数据映射器 + 观察者模式

7
我正在使用PHP构建一个应用程序,并使用数据映射器模式进行数据库访问。我考虑使用观察者模式来使所有的映射器观察它们创建的实体,以便它们可以自动将任何更改保存回数据库,而无需手动解析它们。
我只是想知道这是否是一个好主意,或者是否是不良做法等?
我通常使用几个链接在一起的对象层级,并且目前必须手动将每个对象解析到其映射器中,这相当繁琐,所以只是试图想出更好的解决方案。
谢谢, 杰克

很棒的问题,希望你能得到一些不错的答案。 - Asciant
2个回答

3

对我来说,这绝对是一个好主意。你所做的类似于工作单元模式,旨在跟踪您对映射对象所做的更改,并在完成后提交(通常作为单个事务)。

我认为像OutletRepose这样的项目也在PHP中为您提供了这些功能,同时减轻了一些映射痛苦,但我个人没有使用过它们。

顺便说一句,如果您希望走领域驱动设计的道路并从中获得清晰的隔离效果,那么听起来您的对象层次结构可能会受益于被视为聚合物

--

编辑:看起来eZ Components也有一个相当全面的PHP ORM解决方案,而Doctrine 2.0也正在朝这个方向发展。

--

编辑2:我不会考虑Propel或Creole解决你正在讨论的问题。Creole不是ORM,更像是PDO这样的DB抽象层 - 而且该项目现在已经正式“死亡”。Propel使用ActiveRecord模式,而不是DataMapper模式,因此您的领域对象最终需要承担更多的持久化责任,并且据我所知,它不包括工作单元设施。

嗨,谢谢你提供的信息,我一定会研究一下你提到的项目。 - Jack Sleight

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接