我目前正在研究针对高度可维护系统的应用程序设计的最佳实践(在相当高的水平上),从而导致最小的摩擦变化。通过“数据层”,我的意思是数据库设计,对象关系映射器(ORM)和一般数据访问技术。

从您的经验来看,您发现在数据层开发方面是常见的错误和不良做法,以及您采取 /采取了哪些措施 /或可以推荐使数据层成为开发人员的更好的地方看法?

一个示例答案可能包括:缓慢,可扩展和扩展数据层的最常见原因是什么? +可以采取哪些措施(无论是设计还是重构)来解决此问题?

我在这里寻找战争故事以及一些现实世界的建议,这些建议可以建立在公开可用的指导文件和样本中。

有帮助吗?

解决方案

魔法。

我用过 冬眠, ,它会自动从数据库中存储和获取对象。它还支持懒惰加载,因此仅在要求时才从数据库中检索相关对象。这以某种神奇的方式无法理解。

只要有效,这一切都可以正常工作,但是当它分解时,就不可能追踪它。我认为当我们合并冬眠时,我们遇到了问题 AOP, ,当我们的代码执行时,尚未以某种方式用冬眠初始化对象。这个问题很难调试,因为休眠以如此神秘的方式起作用。

其他提示

对象相关的映射是不良的实践。通过这种情况,我的意思是它倾向于生成只能松散地描述为“关系”的数据模式,因此它们的扩展较差并表现出差数据完整性。

这是因为正确的关系模式已经通过了正常化的过程,而映射的结果通常是对象类作为数据库表。这些通常不会被标准化,而是为了立即提供了OO开发人员的便利。

当然,如果持续数据要求最少,这并不重要。

但是,我曾经在一家通过接管其他几家公司成长的运输公司工作,并将综合运营系统的开发外包给了使用OO方法,并使用OO方法来替换了一家公司由或映射生成的数据模式。开发系统的性能特征是如此差,数据模式如此复杂,以至于运输公司在开发了两年之后就将其删除 - 甚至还没有上线!

这是或映射的直接结果;模式中最严重的复杂性(因此性能差)是由仅作为OO设计过程的工件创建的表的存在引起的 - 它们反映了屏幕布局而不是数据关系。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top