我目前正在实现一个系统,我对系统中不同元素之间的交互有一个问题,该类与直接与数据库交互的类(一个打开和关闭连接,执行sql查询等)。
到目前为止,我的业务逻辑层正在推迟构建所有SQL查询(取决于某些输入)到我的数据库访问层,而数据库访问层又调用数据库处理类来执行每个查询。请注意,我的业务逻辑层正上方是GUI。
问题是:在业务逻辑层中包含SQL查询的构造是不好的做法?我问这个是因为我需要实现一个过程,从数据库DB1获取数据,操作它,然后将其写入DB2 。因此,我发现硬编码这些SQL查询将更容易保留在我的业务层中。
请从架构的角度让我知道您的想法,如果这是一个干净的设计,或者我应该在我的数据库访问层中包含这个逻辑。
答案 0 :(得分:1)
在业务逻辑层中包含SQL查询的构造是不好的做法吗?
最有可能。业务层通常应该与数据库无关。
我需要实现一个从数据库DB1获取数据,操作它,然后将其写入DB2的过程
因此,您需要两个数据层对象 - 一个用于从DB1获取数据,另一个用于将其保存在DB2中。 "操纵"可以在任何一个地方(业务层或数据层)完成,具体取决于操作的性质。例如,它纯粹是数据转换,还是依赖于业务层的其他方面?
答案 1 :(得分:0)
您根本不需要将此逻辑带到Business层。
请按照以下步骤
这种方式更优雅,您可以保持当前架构不变。
编辑
您可以创建一个单独的数据访问层来访问DB2,并让Business层在步骤4中调用它。这样,您可以使数据访问层更加一致。