了解 DAO 模式和接口
Posted
技术标签:
【中文标题】了解 DAO 模式和接口【英文标题】:Understanding DAO-pattern and interfaces 【发布时间】:2016-01-26 15:32:48 【问题描述】:我正在阅读J. Bloch
的有效Java,他说的是:
一旦一个接口被发布并被广泛实现,它几乎 无法改变。
所以,现在考虑DAO-pattern 的简单接口:
public interface UserDao
public User getById(int id);
public Collection<User> getAll();
public boolean delete(int userId);
public boolean update(User u);
这是我的Dao
界面首次发布时的样子。到那时,我不得不向用户添加一些功能,以便通过 registration_date
或类似的东西来聚合所有用户。所以,我需要在DAO
-接口中添加相应的方法声明并实现它。
此外,现在我无法想象DAO
-interfaces 可能或多或少是稳定的,因为添加一些新的DAO
-操作经常发生。
也许是我的 DAO 设计灾难,或者接口几乎不适合 DAO
s?
【问题讨论】:
您可以从界面中删除 public 关键字,因为它们是多余的。 【参考方案1】:我认为 J. Bloch 的这句话是针对公共接口的,而不是针对您的 DAO 案例。
想象一下您创建了一个公共 API 来让任何程序员都可以使用您的平台。如果您要更改该接口,则需要程序员调整他的代码,因此这将令人沮丧。
但是,如果您为内部应用创建界面,则无需承担风险,根据需要改进界面是值得的。
显然,您必须考虑有多少类实现了您的接口并承担修改成本。
【讨论】:
我认为 J. Bloch 的这句话是针对公共接口的。 同意。项目中的内部接口一直在变化。以上是关于了解 DAO 模式和接口的主要内容,如果未能解决你的问题,请参考以下文章
求对hibernate源码了解的大神!关于hibernate4及以上版本---不配置事务,dao类继承自HibernateDaoSupport