| Altas, bajas y modificaciones |
| Paso 1: Aplicar los Patrones de diseņo Abstract Factory y Factory Method para que todas las BDS puedan interactuar con aplicaciones Java de forma transparente |
Apéndice - Tipos de drivers para acceder a Bases de Dados desde Java
Las APIs java.sql y javax.sql tienen una serie de Interfaces diseñadas para que los fabricantes de gestores de Bases de Datos las implementen.
- este hecho hace posible que podamos interactuar desde una aplicación Java con diferentes Bases de Datos de forma transparente.
- para conseguir esto se han seguido los Patrones de diseño GoF (Gang of four) Abstract Factory y Factory Method
Este es un ejemplo de la implementación de dichos Patrones de diseño
- <<factoría concreta>>
- cada Fabricante de Bases de Datos interesado en que sus Bases de Datos puedan ser accedidas desde aplicaciones Java, crean un Driver escrito en Java que implementa la Interfaz Driver
- <<Factory Method>>
- la Clase DriverManager tiene un método estático llamado getDriver(...) que cuando es invocado devuelve un Objeto de tipo Driver de un fabricante de Bases de Datos
- este tipo de método que devuelve una factoría concreta aplica el Patrón de diseño Factory Method
- <<Abstract Factory>>
- la Interfaz Driver marca las pautas que tienen que seguir todos los fabricantes de Bases de Datos.
- es decir están obligados a implementar todos los métodos de la Interfaz
- y por supuesto el código que escriba cada fabricante será específico para su tipo de Base de Datos
- este tipo de Clase que fuerza a las factorías concretas a implementar un conjunto de métodos aplica el Patrón de diseño Abstract Factory
- las aplicaciones Java no acceden directamente a la Clase Driver, pero sí lo hacen las APIs de Java.
- si una API de Java quiere invocar por ejemplo al método getMajorVersion(...) de un Objeto de tipo Driver lo hace de forma polimórfica a través de la seleccón de método dinámica
Driver driverDBS = DriverManager.getDriver(urlDeJdbc);
int ultimaVersion = driverDBS.getMajorVersion(); |
- driverDBS.getMajorVersion();
- no importa si nos estamos comunicando con una Base de Datos ODBC, con MySQL, con Oracle o con cualquier otro driver de cualquier otro fabricante que siga estos Patrones de diseño
- lo que sí es cierto es que si a la MVJ le interesa saber cual és la última versión de un driver de un fabricante, lo hará siempre con el método getMajorVersion() de forma transparente sin importarle realmente con que Driver de Base de Datos concreto está hablando