Relation entre DAO et JDBC?
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:
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.