-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Description
Violación del DIP en conexión a base de datos
Descripción del problema
Las clases dependen directamente de una implementación concreta:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel", "root", "Sudhir@123");
Solución propuesta
Introducir una abstracción DatabaseConnection y depender de interfaces, no implementaciones.
public interface DatabaseConnection {
Connection getConnection() throws Exception;
}
public class MySQLConnection implements DatabaseConnection {
@Override
public Connection getConnection() throws Exception {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel", "root", "Sudhir@123");
}
}
Ahora tendremos que poner estos cambios en la clase de CustomerRepository
public class CustomerRepository {
private final DatabaseConnection db;
public CustomerRepository(DatabaseConnection db) {
this.db = db;
}
}
Beneficios
Se desacopla la lógica de la fuente de datos.
Permite probar la aplicación sin conexión real (mock de DatabaseConnection).
Facilita migraciones a otros motores SQL.Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels