gpt4 book ai didi

java - DAO & BO(数据访问层)——架构

转载 作者:太空狗 更新时间:2023-10-29 22:50:54 25 4
gpt4 key购买 nike

我对网上找到的一个例子有点困惑 - spring & hibernate (要点 4.Model & BO & DAO)。有模型、DAO 和 BO 类(+ DAO 和 BO 接口(interface))。我不太清楚的是,如果 DAO 和 BO 具有完全相同的功能(唯一的区别是 BO 有一个 DAO setter),为什么它们被分成不同的类。

作者仅解释了模式:

is useful to identify the layer clearly to avoid mess up the project structure

但对我来说它似乎设计过度(至少在这种情况下)。我知道这个例子很简单,但是这个类分离有什么用呢?有人可以举个例子吗?

最佳答案

他们所说的 BO 似乎是一种商业服务。 DAO 的工作是包含与持久性相关的代码:插入、更新、查询数据库。

服务划分事务,包含业务逻辑,通常使用一个或多个 DAO 来实现此逻辑。对于某些用例,服务只是委托(delegate)给 DAO。对于其他人,它调用一个或多个 DAO 的多个方法。

经典示例是汇款服务:

public void transferMoney(Long sourceAccountId, Long targetAccountId, BigDecimal amount) {
Account source = accountDAO.getById(sourceAccountId);
Account target = accountDAO.getById(targetAccountId);
if (source.getBalance().compareTo(amount) < 0) {
throw new NotEnoughMoneyException();
}
source.decrementBalance(amount);
target.incrementBalance(amount);
auditDAO.insertTransaction(sourceAccountId, targetAccountId, amount);
// other business logic
}

关于java - DAO & BO(数据访问层)——架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com