数据访问层的推荐数据结构

时间:2009-07-27 00:01:46

标签: data-structures data-access-layer

我正在为数据库构建一个DataAccess层,建议使用什么数据结构来传递和返回一个集合?

4 个答案:

答案 0 :(得分:0)

我使用映射到db表的数据访问对象列表。

答案 1 :(得分:0)

我不确定您使用的语言是什么,但总的来说,存在简单性与可扩展性之间的权衡。

如果直接返回DataSet,您现在已经将自己耦合到特定于数据库的类。这留下了很小的扩展空间 - 如果您允许访问文件或其他类型的数据源,该怎么办?但是,它也很简单。这是记录集模式,C#/ VB为此提供了很多内置支持。 GUI层可以访问记录集并轻松操作数据。这适用于简单的应用程序。

另一方面,您可以将数据集包装在自定义对象中,并提供网关方法(请参阅网关模式http://martinfowler.com/eaaCatalog/gateway.html)。此方法更复杂,但提供了更多的可扩展性。在需要分离业务逻辑,数据逻辑和GUI逻辑的大型应用程序中,这是一种更强大的方法。

对于大型企业应用程序,您可以查看使用对象关系映射工具(ORM)。它们有助于自动将java对象映射到数据库表。他们隐藏了很多痛苦的SQL细节。像Spring这样的框架为ORM提供了出色的支持。

答案 2 :(得分:0)

我倾向于使用对象数组,这样我就可以将DAO与业务逻辑断开连接。

例如,您可以将数据存储在DAO中作为数据集,并在执行更新之前为他们提供一种简单的方法来添加到数据库,这样他们就可以传递信息来执行修改操作,然后他们想要提交更改,他们可以一次性完成。

我更喜欢用户不能自己添加/修改结构,因为它更难确定数据库中必须更改的内容。

通过最初返回数组,他们可以显示数据库中的内容。

然后,当表示层进行更改时,控制器可以更新DAO。通过松耦合,整个系统变得更加灵活,因为您可以将DAO从数据集更改为其他内容,而应用程序的其余部分则无关紧要。

答案 3 :(得分:0)

有两种选择是最通用的。

查看ResultSet的第一种方法是作为地图列表,其中每个Map表示ResultSet中的一行。键是FROM子句中列出的列;值是数据库值。

查看ResultSet的第二种方法是列表映射,其中每个List表示ResultSet中的一列。 Map键是FROM子句中列出的列;值是数据库值列表。

如果你不想做全面的ORM,这些可以带你走很长的路。