发布于2023-11-06 08:16 阅读(1061) 评论(0) 点赞(29) 收藏(3)
我正在编写我的第一个 Spring MVC Web 应用程序,并且有一个关于 DAO 和 Web 服务请求的问题。
本质上,我的应用程序允许用户构建订单,该订单通过 DAO 持久保存到数据库中。稍后,计划的工作人员将从数据库中检索新订单,将它们提交给第三方 SOAP 服务,并使用一些详细信息(例如订单号)更新每个订单。
我的控制器调用 OrderService (精简版本):
@Service
public class OrderService {
@Autowired
private OrderDao orderDao;
public List<Order> getOrderList() {
List<Order> orders = orderDao.getAllOrders();
return orders;
}
public void addNewOrder(Order order) {
orderDao.addOrder(order);
}
}
OrderService 调用 OrderDao:
@Repository
public class OrderDao extends JdbcDaoSupport {
@Autowired
public OrderDao(DataSource dataSource) {
setDataSource(dataSource);
}
public List<Order> getAllOrders() {
String sqlQuery = "SELECT id, name, status, orderNumber FROM orders";
List<Order> orders = getJdbcTemplate().query(sqlQuery, new OrderRowMapper());
return orders;
}
public int addOrder(Order order) {
String sqlQuery = "INSERT INTO orders (name, status) VALUES (?, ?)";
getJdbcTemplate().update(sqlQuery, new Object[] { order.getName(), order.getStatus() });
return getJdbcTemplate().queryForObject("SELECT LAST_INSERT_ID()", Integer.class );
}
}
订单模型如下所示:
public class Order {
private int orderId;
private String name;
private String status;
private String orderNumber;
// getters and setters etc.
}
目前我的 OrderDao 仅与数据库通信以对 Order 模型执行 CRUD 操作。我不确定是否应该在 OrderDao 中创建一个 placeOrder() 方法,因为这意味着我有一个同时访问数据库和 SOAP 服务的 DAO,这感觉不对。
将 placeOrder() 放在 OrderService 中也感觉是错误的,因为该服务将包含内部 DAO 调用和外部第三方 SOAP 调用的混合。
我一直在阅读有关接口的内容,但我认为它们对我没有帮助,因为我的数据库 DAO 将包含 create()、update()、delete(),这些不适用于 SOAP DAO。
我应该只创建两个 DAO:OrderDaoDatabase 和 OrderDaoSoap 吗?
使用分层架构的目的是鼓励解耦和关注点分离。您已经拥有了负责业务逻辑的服务层和与数据库进行通信的数据访问层 (DAO),这似乎是正确的。OrderService 应该与数据库通信,OrderDAO 应该与数据库通信。
你的预定工人似乎是一个不同的阶层。OrderDAO 可以通过不同的方法公开订单数据(这是您的应用程序所需的)。如果placeOrder()
是对外部 Web 服务的调用,则可以从 OrderService 中的适当方法或不同的类(如果需要)进行调用。现在,由于该调用在调用时尚未完成addOrder()
,因此它可能属于调度程序调用的不同方法。另一方面,我认为不placeOrder()
应该进入OrderDAO
,它应该保留它所说的 - 数据访问对象。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/677582/faa5d2a5e5d50faa7d75/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!