【发布时间】:2013-03-16 12:13:57
【问题描述】:
我正在寻找有关如何在纯 Java/JDBC 中实现 DAO 层的教程/最佳实践示例。
大多数 DAO 是否基于 Data Mapper 模式?
是否也使用了 Active Record 模式?
你是怎么做到的?
【问题讨论】:
-
我看到 DAO 主要使用 Data Mapper。您可以通过将结果集(从查询中获得)转换为您的域对象来实现。
-
好的,我如何允许我的应用程序的其他层仅使用我的库提供的 API 有效地迭代 100k 表?如果这些结果必须被过滤/排序/分页怎么办?我要创建一个专用的迭代器类吗?
-
我认为你的 dao 接口应该是这样的,你总是返回域对象或域对象的列表或集合(来自 java util)。为此,您必须解析结果集并进行适当的转换。然后你的其他层与 dao 对话,取回你的域对象并使用它们。
-
所以换句话说,要遍历 100k 表,我必须将所有 100k 行加载到一些 List/Set 实现中并将其返回给用户?
-
不,这不是我的意思。我的观点是你的其他层从不与任何 JDBC 组件通信,并且使用标准的 java 库。如果您想返回较少数量的记录(如分页),您可以创建接受下限和上限的 dao 方法,您可以将其传递给查询以返回适当的记录。
标签: java activerecord jdbc dao datamapper