ORM和DAO设计模式

时间:2013-07-13 22:02:45

标签: java hibernate orm dao

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

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

如果我将Hibernate更改为JDBC然后我有一个问题,如果我说UserDao.getUserByPk(1)我只得到用户数据,对于他的命令我需要做OrdesDao.getOrdersByUserId(1),但在我看来我有只有一个对象。

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

由于

1 个答案:

答案 0 :(得分:1)

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

查看图层>服务层> Dao Layer(HibernateImpl或JdbcImpl等)>从db获取数据到DTO并将其返回给调用者。