0

我想将 Dao 模式与 hibernate orm 一起使用,但我对如何创建数据传输对象感到困惑。

例如,如果我有一个用户表和订单表,则为一对多关系。使用休眠我的 UserDTO 包含所有用户列 + OrdersDTO。OrdersDTO 将由具有延迟加载的休眠填充,所以如果我说 UserDao.getUserByPk(1) 我会获取所有用户数据和他的所有订单,然后我将此对象发送到视图。

如果我将 Hibernate 更改为 JDBC,那么我有一个问题,如果我说 UserDao.getUserByPk(1) 我只得到用户数据,对于他的订单我需要执行 OrdesDao.getOrdersByUserId(1),但在我看来我只有一个对象.

所以我的问题是如何使用 ORM 功能(例如延迟加载),但同时如果我更改数据源,我的业务逻辑不会受到影响。

谢谢

4

1 回答 1

1

您必须创建一个“dao”抽象层来执行此操作。包含业务逻辑的服务层应该调用 dao 层来获取任何 DTO。dao 层应该包含契约/接口和实现(基于 Hibernate、JDBC 或其他)。您应该能够通过一些外部化配置来配置您的 dao 实现选择(以防止在 dao 层实现选择发生任何变化后重新编译)。

查看 Layer > Service Layer > Dao Layer (HibernateImpl or JdbcImpl or etc.) > fetch data from db into DTOs and return it to caller.

于 2013-07-13T23:54:45.827 回答