Skip to content

Correción de DIP en las clases #7

@Eduidk28

Description

@Eduidk28

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions