2012-02-17 73 views
0

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

在此先感谢

+0

[DAO和JDBC的关系?]的可能的重复(http://stackoverflow.com/questions/7070467/dao-and-jdbc-relation) – BalusC 2012-02-17 23:37:45

+0

这是一个链接:[数据访问对象](http:// java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html)。 – enzom83 2012-02-17 23:57:57

回答

2

它像运输的概念和柴油发动机

DAO之间的区别是,你从你的应用程序的其余部分隔离持久性相关的操作模式。它是一种设计数据处理组件的方式。Hibernate是一个ORM框架的特定实现。它是一种用于简化DAO实现的工具(大多数时间:P)

3

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

Hibernate是一个ORM(对象关系映射)库,它使您能够将Java类映射到关系表。使用Hibernate,您可以在不用手写SQL查询的情况下从表中保存和查询数据。

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

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

希望它有帮助!