0

DAO,也称为映射器(我认为),是一种核心 Java EE 模式

我喜欢这种模式,因为(IMO)在代码和 SQL 之间创建一个抽象层可以大大提高代码的质量。

我通常遵循 Java EE 模式,但是当您需要从数据库中获取一些非常具体的数据时,我会感到有些失落。我不确定谁应该负责检索这些数据。

我的方法通常是创建一个UserModel类,在其中存储最常用的参数,并在 DAO 中创建一个方法getUser(param: String): UserModel。但是,如果数据库中有一个列当然是需要的,但不是那么频繁。最好的方法是什么?

你认为 DAO 应该提供类似 (eg)getUserID(): String或的方法isUserVerfied(): Boolean吗?还是您认为 DAO 的职责只是提供基础(更新/删除/插入/选择)方法?

基本上,问题是,当您需要一些在代码中没有大量使用的数据时,最好的方法是什么,select()在您的 DAO 中创建一个方法,将所有内容(用户表(例如))加载到您的模型中。或者有一些特定的方法,isUserVerified(): Boolean尽管这不是模式的一部分?还是有另一种适用于两种情况的方法(经常使用字段和不经常使用的字段)?

请注意,答案应尽可能与语言无关。

4

1 回答 1

1

DAO 的目的是水合完整的对象,在大多数情况下,始终加载对象的所有字段应该不是问题。在您没有遇到性能问题的情况下不加载“不经常使用”的列似乎是过早的优化。

但是,在处理非常大的列(图像、BLOB ......)时,您可以使用延迟加载,无论是通过 ORM 还是手动。加载列的方法可以在 DAO 中,也可以在特定服务中。

于 2012-08-21T13:18:03.923 回答