我的想法:
我绝对鄙视存储过程,原因有很多:成本、可伸缩性和兼容性。
。
我的解决方案:
将模型从应用程序的存储库中提取出来,并将它们放入外部回购。然后,每个应用程序都会有一个指向外部存储库的models/Base子目录。然后将一个简单的工厂方法放在前面,比如GetModel("FooWidgets"),它可以将baseFooWidget类作为实例返回,也可以返回特定于应用程序的子实例。这将允许单独的应用程序继承FooWidget的类,或者与某些工具(如Liquabase )相结合,从而允许更大的可变性基础。
一个声音在我的后脑说这是太easy...what了,我是不是错过了这里?
参考资料:我知道PHP框架在这些方面做了一些事情,允许应用程序设计人员用新增的功能包装Kohana的基础库,如果PHP能够这样做,我就不会看到任何其他语言有问题。
发布于 2009-10-17 17:54:50
摆脱存储过程是一个很好的想法,你用你的三分精确地击中了钉子。
另一方面,PHP不容易允许结构化包装。我不是一个PHP成瘾者(更多的是C# / Java ),但是解决这个问题的最好方法是单独的数据库/域/访问/业务层。简言之:
底部是
这是一个简化的概述。我不知道您的解决方案是否意味着这一点,但通常情况是这样的:分离关注点。如果更改数据库,则只需更改映射即可。如果需要不同的结果集,则只更改访问层。
可以帮助您完成这一过程的工具是Hibernate (但是您需要JavaBridge),它是ORM工具的选择,但有一些陡峭的学习曲线。对于PHP,看起来Doctrine可以为您做很多事情。其他工具也存在。理想情况下,工具允许往返工程:如果您更改了一些东西,您将再次运行该工具(或更改某些东西),并且不会破坏应用程序。
https://stackoverflow.com/questions/1582723
复制相似问题