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;
// ...
}
Для DAO JDBC - это просто деталь реализации.
public class UserDAOJDBC implements UserDAO {
public User find(Long id) throws DAOException {
// Write JDBC code here to return User by id.
}
// ...
}
Hibernate может быть другой.
public class UserDAOHibernate implements UserDAO {
public User find(Long id) throws DAOException {
// Write Hibernate code here to return User by id.
}
// ...
}
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.
}
// ...
}
Позволяет переключать реализацию UserDAO
без изменения бизнес-кода, использующего DAO (конечно, только если вы правильно кодируете интерфейс).
Для JDBC вам нужно всего лишь написать много строк, чтобы найти / сохранить / удалить нужную информацию, тогда как в Hibernate это всего лишь несколько строк.Hiberenate как ORM берет именно ту грязную работу JDBC из ваших рук, независимо от того, используете вы DAO или нет.
См. Также: