【发布时间】:2012-02-17 23:29:53
【问题描述】:
我的导师告诉我DAO和hibernate之间有区别......我从昨天开始一直在寻找答案,但找不到。谁能解释清楚。
【问题讨论】:
-
DAO and JDBC relation? 的可能重复项
-
这是一个链接:Data Access Object.
标签: java
我的导师告诉我DAO和hibernate之间有区别......我从昨天开始一直在寻找答案,但找不到。谁能解释清楚。
【问题讨论】:
标签: java
DAO(数据访问对象)是一种设计模式,它定义了一种隐藏应用程序持久层的方法。使用其接口的类将不知道持久性操作,并且与数据库或您使用的任何其他持久性机制分离。
Hibernate 是一个 ORM(对象关系映射)库,可让您将 Java 类映射到关系表。使用 Hibernate,您可以保存和查询表中的数据,而无需手动编写 SQL 查询。
因此,即使您使用 Hibernate,您仍可能希望实现 DAO 模式以将持久层与您的应用程序分离。
【讨论】:
这就像运输概念和柴油发动机之间的区别
DAO 是一种将与持久性相关的操作与应用程序的其余部分隔离开来的模式。它是一种设计数据处理组件的方法
Hibernate 是 ORM 框架的特定实现。它是一种用于简化 DAO 实现的工具(大多数时候:P)
【讨论】:
它们是不同的东西。所以你无法比较。
DAO(数据访问对象)是一种设计模式,可帮助您集中和解耦数据访问层。
public abstract MyBaseDAO{
//Connection settings, common behavior.
}
public interface CustomerPersistence{
//Defines the API
Customer saveCustomer(Customer customer);
}
public class CustomerPersistenceImpl extends MyBaseDAO implements CustomerPersistence{
//Implements the API
public Customer saveCustomer(Customer customer){
//Use some methods from MyBaseDao
this.saveObject(customer)
}
}
这只是一个小例子。主要思想是您的业务逻辑应该只使用CustomerPersistence(随着时间的推移仍然存在)。
MyBaseDAO 和 CustomerPersistenceImpl 可能会发生变化,但会与您的业务脱钩。
关于 Hibernate,您可以使用 CustomerPersistenceHibernateImpl 来实现您的 DAO 或其他 ORM 框架,而无需任何进一步的更改。
【讨论】: