DAO и JDBC отношения? - PullRequest
       29

DAO и JDBC отношения?

9 голосов
/ 16 августа 2011

Я знаю, что Hibernate реализует ORM (Object Relational Mapping), какой тип отображения реализует JDBC? Это реализует DAO? Я не совсем понимаю, как / если DAO связана с JDBC ...?

Ответы [ 2 ]

18 голосов
/ 16 августа 2011

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 или нет.

См. Также:

4 голосов
/ 16 августа 2011

DAO - это абстракция для доступа к данным, идея состоит в том, чтобы отделить технические детали доступа к данным от остальной части приложения.Он может применяться к любым данным.

JDBC - это API для доступа к реляционным базам данных с использованием Java.

JDBC более низкоуровневый, чем ORM, он отображает некоторые типы Java на типы SQL, но не более того, он просто принимает DDL и DML, выполняет их и возвращает наборы результатов.Это ваша программа, чтобы понять это.

...