Database 封装数据库访问是一种好的做法吗

Database 封装数据库访问是一种好的做法吗,database,language-agnostic,encapsulation,Database,Language Agnostic,Encapsulation,我正在开发一个应用程序。 我在某个地方读到,不应该直接访问数据库,但应该有一个层次,通过它访问数据库 我不知道确切的原因 如果您能为我提供一些推理或链接,那就太好了。是的,从其他部分抽象/封装您的数据库访问逻辑是一个很好的做法。数据访问层不应直接访问或向所有人公开。当你设计一个应用程序时,你必须考虑这个重要的因素“分层架构”,例如业务层、服务层、表示层等等。类似服务层(如果其web应用程序)的工作流调用业务层,业务层调用数据访问层。所有这些层都应该彼此非常抽象,或者只有非常直接的层(所谓的客户机

我正在开发一个应用程序。 我在某个地方读到,不应该直接访问数据库,但应该有一个层次,通过它访问数据库

我不知道确切的原因


如果您能为我提供一些推理或链接,那就太好了。

是的,从其他部分抽象/封装您的数据库访问逻辑是一个很好的做法。数据访问层不应直接访问或向所有人公开。当你设计一个应用程序时,你必须考虑这个重要的因素“分层架构”,例如业务层、服务层、表示层等等。类似服务层(如果其web应用程序)的工作流调用业务层,业务层调用数据访问层。所有这些层都应该彼此非常抽象,或者只有非常直接的层(所谓的客户机)才可以访问

回答您的问题:假设您当前的数据访问实现基于普通的JDBC/ODBC;您正计划使用某种ORM框架来实现它。在这种情况下,在不同API中编写的不同数据访问逻辑之间切换/迁移非常容易,而不会影响应用程序的其余部分,而且其他层也不知道您的更改,因为您的设计在本质上是非常抽象的

底线:始终针对抽象接口而不是实现


希望这对您有所帮助,并感谢您的评论

这将对您有所帮助。这是一个先前发布的问题,与您的问题类似。