检索两组数据的Dao

时间:2015-09-07 14:33:18

标签: java dao

假设我们有一个应用程序来处理车辆数据库表中的车辆。

所有处理逻辑都相同,可用于处理轿车和卡车。

应用程序将要求DAO车辆提供一个关键点,具体取决于它可能需要轿车或卡车(而不是两者)的过程。

处理此问题的好方法是什么?

请记住以下内容:

  1. 向DAO方法发送一个参数,说明我们需要哪种类型的数据。
  2. 将DAO设置为“模式”以专注于特定数据集。
  3. 为每组数据提供两个DAO实现。也许有一个抽象DAO和两个实现。服务/控制器可以使用必要的DAO。
  4. 任何人都可以推荐解决方案或评论并推荐以上任何一种吗?

    谢谢

1 个答案:

答案 0 :(得分:1)

因为dao可以在多线程环境中被不同的调用使用,所以不要使用“模式”。它可能导致无效的呼叫。请考虑以下步骤:

Thread 1 set dao mode to truck
Thread 2 set dao mode to sedan
Thread 1 read data. It reads sedans instead of trucks

带有一个附加参数(类型)的解决方案接缝良好,提取卡车(或轿车)可以成为请求的一部分。

请注意,如果将来可以使用附加装置,这种解决方案并不是最好的解决方案。它打破了开放封闭原则。 这里是Wikipedia的OCP简要说明:

  

软件实体......应该是可以扩展的,但是已经关闭了   修改

因此,针对这种情况的最佳方法是使用dao接口和两个不同的dao实现,一个用于轿车,一个用于卡车。如果将来还存在其他车辆,则不需要修改现有代码,但只需编写实现dao接口的新类。这保证了开放封闭原则。