我是 Java 编程新手,正在尝试了解实现 DAO 设计模式的正确方法。这是一个示例,我有一个 itemCatalog 类,其中包含 populateItemCatalog 和 searchitemCatalog 方法。项目目录是使用类型项目对象的数组实现的。
现在我想切换到 DAO 设计以从 ms-access 数据库访问相同的数据。我的问题是现在这些方法会变成什么,因为 DAO 正在搜索数据库。我是否修改它们以从 DAO 返回 DTO。希望我的问题很清楚。谢谢
通常这是它的工作原理。
你为你的对象实现了一个 DAO 接口。在您的情况下,CatalogDao。
这应该具有所有必需的数据访问方法。
现在,DAO 模式背后的想法是您可以拥有相同的多个实现。
在您的情况下,您将拥有它的 MS-Access 实现。这应该隐藏所有数据库特定的逻辑,并且应该返回 POJO。
DTO 通常是不同的东西。在其通常意义上,它意味着用于客户端-服务器通信的对象。例如,您的 POJO 可以转换为 xml 或 json。从客户端调用时。
这是完全不同的。
简而言之,DAO 对您的应用层隐藏了 db 实现细节,以便应用层可以直接处理 java 对象。
public interface ItemCatalogDao{
ItemCatalog searchItemCatalog(Long itemId)
}
一种可能的实现可能是
public class ItemCatalogDaoMsImpl implements ItemCatalogDao{
public ItemCatalogDaoMsImpl(){
//do your initialization code here , such as getting connection etc
}
public ItemCatalog searchItemCatalog(Long itemId){
//write your sql code here
}
}
正如你所说; 现在您想从不同的数据库中获取相同的数据。这种情况 DAO 模式非常适合。
public interface ItemCatalogDAO extends GenericDAO<DTO, String> {
public DTO populateCatalog(String id);
public searchCatalog(String x);
}
现在您的实现类将必须实现上述(示例)接口。只要确保你设计的接口可以被所有实现类使用。
因此,正如您所问的,您能否返回 DTO。是的,您应该根据您的要求返回 DTO 或 DTO 列表。从您的 DAO 返回一个对象是一种很好的做法。这样你就可以抽象你的实现,它也支持泛型的使用。