【问题标题】:Is it a good practice to encapsulate the database access封装数据库访问是一种好习惯吗
【发布时间】:2013-12-12 15:25:09
【问题描述】:
我正在开发一个应用程序。
我在某处读到不应直接访问数据库,但应该有一种层,并且应该通过它访问数据库。
我不知道确切的原因。
如果您能提供一些推理或链接,那就太好了。
【问题讨论】:
标签:
database
language-agnostic
encapsulation
【解决方案1】:
是的,从其他部分 o 抽象/封装您的数据库访问逻辑确实是一个好习惯。数据访问层不应直接访问或暴露给所有人。这意味着当您设计应用程序时,您必须考虑“分层架构”这一重要因素,例如业务层、服务层、表示层等等。像服务层(如果它的 Web 应用程序)这样的工作流调用业务层,业务层调用数据访问层。所有这些层都应该非常抽象,或者只能由最直接的层(所谓的客户端)访问。
回答你的问题:假设你当前的数据访问实现是基于普通的 JDBC/ODBC 。当你的需求增长一段时间后;你打算用一些 ORM 框架来实现它。在这种情况下,在用不同 API 编写的不同数据访问逻辑之间切换/迁移真的很容易,而不会影响应用程序的其余部分,而且由于您的设计本质上是非常抽象的,因此其他层仍然不知道您的更改。
底线:始终反对抽象接口而不是实现。
希望这对您有所帮助并感谢 cmets