DAO和hibernate之间的区别

时间:2012-02-17 23:29:54

标签: java

我的导师告诉我DAO和hibernate之间有区别...我从昨天开始一直在寻找答案,但找不到它。任何人都可以清楚地解释清楚。

提前致谢

3 个答案:

答案 0 :(得分:5)

DAO(数据访问对象)是一种设计模式,它定义了一种隐藏应用程序持久层的方法。使用其接口的类将不会意识到持久性操作,并且与数据库或您使用的任何其他持久性机制脱钩。

Hibernate是一个ORM(对象 - 关系映射)库,它使您能够将Java类映射到关系表。使用Hibernate,您可以保存和查询表中的数据,而无需手动编写SQL查询。

因此,即使您使用Hibernate,您仍然可能希望实现DAO模式以将持久层与应用程序分离。

答案 1 :(得分:2)

它就像运输概念和柴油发动机之间的区别

DAO是一种模式,您可以将持久性相关操作与应用程序的其余部分隔离开来。它是一种设计数据处理组件的方法

Hibernate是ORM框架的特定实现。它是一个用于使DAO实现更简单的工具(大多数时候:P)

答案 2 :(得分:2)

他们是不同的东西。所以你无法比较。

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框架而无需进一步更改。

希望它有所帮助!