Relation entre DAO et JDBC?

je sais que Hibernate met en œuvre ORM (Object Relational Mapping), quel type de cartographie JDBC met en œuvre? Met-il en œuvre de DAO? Je ne comprends pas totalement comment / si DAO est lié à JDBC...?

7
demandé sur skaffman 2011-08-16 00:30:34

2 réponses

DAO n'est pas une carte. DAO signifie objet D'accès aux données. Il ressemble à quelque chose comme ceci:

public interface UserDAO {

    public User find(Long id) throws DAOException;

    public void save(User user) throws DAOException;

    public void delete(User user) throws DAOException;

    // ...
}

pour DAO, JDBC n'est qu'un détail d'implémentation.

public class UserDAOJDBC implements UserDAO {

    public User find(Long id) throws DAOException {
        // Write JDBC code here to return User by id.
    }

    // ...
}

hibernation pourrait en être une autre.

public class UserDAOHibernate implements UserDAO {

    public User find(Long id) throws DAOException {
        // Write Hibernate code here to return User by id.
    }

    // ...
}

JPA pourrait être un autre (dans le cas où vous migrez une application existante à JPA; pour les nouvelles applications, il serait un peu bizarre que JPA est par lui-même le DAO, avec par exemple Hibernate et EclipseLink comme implémentations disponibles).

public class UserDAOJPA implements UserDAO {

    public User find(Long id) throws DAOException {
        // Write JPA code here to return User by id.
    }

    // ...
}

il vous permet de passer de la mise en œuvre UserDAO sans changer le code d'affaires qui utilise le DAO (seulement si vous codez correctement par rapport à l'interface, bien sûr).

pour JDBC vous n'aurez besoin d'écrire que beaucoup de lignes pour trouver/enregistrer/supprimer les informations désirées alors qu'avec Hibernate c'est une question de seulement quelques lignes. Hibérenate comme étant un ORM prend exactement ce travail méchant JDBC de vos mains, indépendamment du fait que vous utilisez un DAO ou non.

voir aussi:

16
répondu BalusC 2017-05-23 11:53:04

DAO est une abstraction pour l'accès aux données, l'idée est de séparer les détails techniques de l'accès aux données du reste de l'application. Il peut s'appliquer à tout type de données.

JDBC est une API pour accéder aux bases de données relationnelles en utilisant Java.

JDBC est plus bas-niveau qu'un ORM, il mappe certains types Java aux types SQL mais pas plus que cela, il prend juste DDL et DML, l'exécute, et renvoie des ensembles de résultats. C'est à votre programme de faire sens de l'il.

4
répondu Nathan Hughes 2011-08-15 20:33:30