El patrón DAO (Data Access Object) consiste en encapsular todo el acceso a base de datos en una capa específica. Así, tu lógica de negocio no depende de SQL ni de JDBC directamente.
1) Qué problemas resuelve DAO
- Evita mezclar SQL con la lógica de la aplicación.
- Hace el código más mantenible y testeable.
- Permite cambiar de BD o de tecnología con menos impacto.
2) Estructura típica
model/: clases de dominio (por ejemploBird).dao/: interfaces (por ejemploBirdsDAO).dao/impl/: implementación concreta (por ejemploBirdDAOPG).db/: conexión y utilidades (DatabaseConnection).
3) Interfaz DAO (ejemplo)
public interface BirdsDAO {
List<Bird> findAll();
Bird findById(int id);
Bird create(Bird bird);
Bird update(Bird bird);
boolean delete(int id);
}
4) Implementación PostgreSQL (idea)
public class BirdDAOPG implements BirdsDAO {
private final Connection conn;
public BirdDAOPG(Connection conn) {
this.conn = conn;
}
@Override
public List<Bird> findAll() {
// PreparedStatement + ResultSet + mapeo a objetos
return new ArrayList<>();
}
}
5) Buenas prácticas
- Usa PreparedStatement (evita SQL injection).
- Centraliza la conexión (o usa un pool si aplica).
- No devuelvas
ResultSetfuera del DAO: devuelve objetos de dominio.
