duc*_*cin 15 java database dao layer
我对网上发现的一个例子有点困惑 - spring和hibernate(指向4. Model & BO & DAO
).有Model,DAO和BO类(+ DAO和BO接口).我不清楚的是,如果DAO和BO分享完全相同的功能,那么为什么DAO和BO被分成不同的类(唯一不同的是BO有一个DAO设置器).
作者只解释了这种模式:
有助于清楚地识别图层,以避免弄乱项目结构
但它似乎过度设计了我(至少在这种情况下).我知道这个例子很简单,但是这个类的分离对什么有用呢?有人能提供一个例子吗?
JB *_*zet 31
他们所谓的BO似乎是一种商业服务.DAO的工作是包含与持久性相关的代码:插入,更新,查询数据库.
服务划分事务,包含业务逻辑,并且通常使用一个或多个DAO来实现此逻辑.对于某些用例,该服务只是委托给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
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24476 次 |
最近记录: |