rra*_*azd 9 database dao hibernate terminology jdbc
我知道Hibernate实现了ORM(对象关系映射),JDBC实现了什么类型的映射?它实现了DAO吗?我不完全理解DAO如何与JDBC相关......?
Bal*_*usC 19
DAO不是映射.DAO代表数据访问对象.它看起来像这样:
public interface UserDAO {
public User find(Long id) throws DAOException;
public void save(User user) throws DAOException;
public void delete(User user) throws DAOException;
// ...
}
Run Code Online (Sandbox Code Playgroud)
对于DAO,JDBC只是一个实现细节.
public class UserDAOJDBC implements UserDAO {
public User find(Long id) throws DAOException {
// Write JDBC code here to return User by id.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
Hibernate可能是另一个.
public class UserDAOHibernate implements UserDAO {
public User find(Long id) throws DAOException {
// Write Hibernate code here to return User by id.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
JPA 可能是另一个(如果你将现有的遗留应用程序迁移到JPA;对于新的应用程序,它会有点奇怪,因为JPA本身实际上是DAO,例如Hibernate和EclipseLink作为可用的实现).
public class UserDAOJPA implements UserDAO {
public User find(Long id) throws DAOException {
// Write JPA code here to return User by id.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
它允许您在UserDAO不改变使用DAO的业务代码的情况下切换实现(当然,只有当您正在对接口进行正确编码时).
对于JDBC,你只需要编写很多行来查找/保存/删除所需的信息,而使用Hibernate则只需要几行.无论你是否使用DAO,Hiberenate作为一个ORM都会从你的手中获取那个令人讨厌的JDBC工作.
DAO是访问数据的抽象,其思想是将数据访问的技术细节与应用程序的其余部分分开。它可以应用于任何类型的数据。
JDBC是用于使用Java访问关系数据库的API。
JDBC比ORM更底层,它将某些Java类型映射为SQL类型,但仅此而已,它仅接受DDL和DML,执行它,并返回结果集。这取决于您的程序来理解它。
| 归档时间: |
|
| 查看次数: |
5059 次 |
| 最近记录: |