Download JDBC
Document related concepts
no text concepts found
Transcript
INSTITUTO TECNOLOGICO DE APIZACO. TALLER DE BASE DE DATOS. 07/12/2011 TRABAJO: JDBC. JANET LARA CORONA. MARIBEL GUZMAN FLORES. MARIA LUISA COCOLETZI SANCHEZ. ELISABEL MENDEZ GONZALEZ. Contenido INTRODUCCION. ........................................................................................................................... 3 JDBC .............................................................................................................................................. 4 Paquete java.sql ..................................................................................................................... 4 JDBC es una API de bajo nivel para API´s de alto nivel ............................................................. 5 Modelos de dos capas y tres capas ...................................................................................... 6 PROCEDIMIENTO DE CONEXIÓN Y ACCESO A DATOS CON JDBC. ................................................ 7 Tipo 1. JDBC-ODBC bridge más driver ODBC: “BRIDGE”........................................................... 8 INTRODUCCION. UN controlador JDBC es compatible con Java Database Connectivity que proporciona un acceso confiable a los datos de las bases de datos de Microsoft SQL Server 2000 y SQL Server 2005 entre otros. El controlador JDBC puede tener acceso a muchas de las características nuevas de SQL Server 2005, incluidas la creación de reflejo de la base de datos y tipos de datos XML, definidos por el usuario y de gran valor; asimismo, es compatible con el nuevo tipo de cursor de aislamiento de instantánea. Además, el controlador JDBC admite el uso de la autenticación integrada con SQL Server 2000 y SQL Server 2005. JDBC Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice. El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión, para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar con cualquier tipo de tareas con la base de datos a las que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos, etc. Paquete java.sql JDBC ofrece el paquete java.sql, en el que existen clases muy útiles para trabajar con bases de datos. Clase Descripción DriverManager Para cargar un driver Connection Para establecer conexiones con las bases de datos Statement Para crear consultas SQL y enviarlas a las BBDD ResultSet Para almacenar el resultado de la consulta Una de las desventajas principales de la versión 1.0.2 de Java era que no tenía soporte alguno para el acceso a bases de datos. Esto limitó la utilidad de Java en el campo de los negocios. Sin embargo, a partir de la versión 1.1 del JDK, Java proporciona un soporte completo para bases de datos por medio de JDBC (Java Database Connectivity). JavaSoft, la subsidiaria de Sun Microsystems referente a Java, introdujo JDBC el cual permite que los programas Java se conecten a cualquier base de datos utilizando diversos controladores (conocidos también como drivers) y un conjunto de objetos y métodos de la API (Interfaz de Programación de Aplicaciones) de Java. JDBC es una API de bajo nivel para API´s de alto nivel Una integración de SQL hacia Java, es decir que las sentencias SQL se puedan mezclar con Java, por ejemplo, que una variable de Java pueda ser usada en una sentencia SQL para recibir o dar valores. Un mapeo directo de las tablas de la BD hacia las clases de Java, donde cala fila de la tabla se convierte en una instancia de la clase, y donde cada columna se corresponde a un atributo de esa instancia. JDBC v/s ODBC y otras API´s ODBC no es apropiado para usar directamente con Java por que usa una interfaz en C. Una traducción literal de la API ODBC en C, no es deseable. Por ejemplo Java no tiene punteros y la ODBC hace gran uso de ellos. ODBC es muy difícil de aprender, hace una mezcla de acciones simples y avanzadas. Una API como JDBC es necesaria para poder desarrollar una solución “puramente de Java”. Modelos de dos capas y tres capas Conformación de SQL El SQL es el idioma normal por acceder las bases de datos correlativas. Una dificultad es que aunque la mayoría del DBMSs (los Sistemas de Dirección de Base de datos) use un formulario normal de SQL para la funcionalidad básica, ellos no conforman la sintaxis de SQL normal más recientemente definida para la funcionalidad más avanzada. Por ejemplo no todas las BD soportar procedimientos almacenados. Una manera que el API de JDBC trata de este problema es permitir cualquier sentencia sea pasada a un driver de DBMS subyacente. Para las aplicaciones complejas, JDBC trata la conformación de SQL de otra manera. Proporciona la información descriptiva sobre el DBMS por medio del DatabaseMetaData para que las aplicaciones puedan adaptar a los requisitos y capacidades de cada DBMS. El Armazón de JDBC JavaSoft proporciona tres componentes JDBC como la parte de la JDK: el JDBC driver manager, la JDBC driver test suite el puente JDBC-ODBC. El JDBC driver manager es el espinazo de la arquitectura de JDBC. Realmente es bastante pequeño y simple; su función primaria es conectar las aplicaciones de Java al chófer de JDBC correcto y entonces salir de la manera. La JDBC driver test suite proporciona un poco de confianza en que drivers de JDBC ejecutarán su programa. Pueden designarse sólo drivers que pasan la JDBC driver test suite. El Armazón de JDBC El puente de JDBC-ODBC les permite a los drivers de ODBC ser usado como drivers de JDBC. Y a largo plazo proporcionará una manera de acceder alguno del DBMSs menos popular si no se crean los drivers de JDBC para ellos. PROCEDIMIENTO DE CONEXIÓN Y ACCESO A DATOS CON JDBC. El procedimiento de conexión con el controlador de la base de datos, independientemente de la arquitectura es siempre muy similar. 1. Cargar el driver. Cualquier driver JDBC, independientemente del tipo debe implementar el interfaz java.sql.Driver. La carga del driver se puede realizar de dos maneras distintas: Definiendo los drivers en la variable sql.driver (variable que mantiene todos las clases de los drivers separados por comas) Cuando la clase DriverManager se inicializa, busca esta propiedad en el sistema. El programador puede forzar la carga de un driver específico, usando el método Class.forName(driver). 2. Registro del driver. Independientemente de la forma de carga del driver que llevemos a cabo, será responsabilidad de cada driver registrarse a sí mismo, usando el método DriverManager.registerDriver. Esto permite a la clase DriverManager, usar cada driver para crear conexiones con el controlador de Base de Datos. Por motivos de seguridad, la capa que gestiona JDBC, controlará en todo momento que driver es el que se está usando, y cuando se realicen conexiones, sólo se podrán usar drivers que estén en el sistema local de ficheros o que usen el mismo ClassLoader que el código que está intentando crear la conexión. En el primero de los casos (a través de la propiedad sql.driver), JDBC usará el primer driver que permita conectarse correctamente a la Base de Datos. 3. Crear una conexión. El objetivo es conseguir un objeto del tipo java.sql.Connection a través del método DriverManager.getConnection(String url). La capa de gestión, cuando este método es invocado, tratará de encontrar un driver adecuado para conectar a la base de datos especificada en la URL, intentándolo por el orden especificado en la variable sql.driver. Cada driver debería examinar si ellos proveen el “subprotocolo” que especifica la URL. (Ver anexo) 3. Tipos de conectores (drivers) JDBC Los conectores o drivers JDBC, se pueden dividir en cuatro tipos principalmente: Tipo 1. JDBC-ODBC bridge más driver ODBC: “BRIDGE” Permite el acceso a Base de Datos JDBC mediante un driver ODBC. Cada máquina cliente que use el puente, debe tener librerías clientes de ODBC(dll propias del S.O) Ventajas: Buena forma de aprender JDBC. También puede ser buena idea usarlo, en sistemas donde Cada máquina cliente tenga ya instalado los drivers ODBC. También es posible que sea la única forma de acceder a ciertos motores de Bases de Datos. Inconvenientes: No es buena idea usar esta solución para aplicaciones que exijan un gran rendimiento, ya que la transformación JDBC-ODBC es costosa. Tampoco es buena solución para aplicaciones con alto nivel de escalabilidad. Tipo 2. Driver Java parciales: “NATIVE” Traducen las llamadas al API de JDBC Java en llamadas propias del motor de Base de Datos (Oracle, Informix...). Al igual que el tipo anterior, exige en las máquinas clientes código binario propio del cliente de la Base de datos específica y del sistema operativo Ventajas: Mejor rendimiento que el anterior. Quizá puede ser buena solución para entornos controlados como intranets. Ejemplo OCI Oracle. Inconvenientes: Principalmente la escalabilidad, ya que estos drivers exigen que en la máquina cliente librerías del cliente de la Base de Datos. Tipo 3. Driver JDBC a través de Middleware: “NETWORK” Traduce las llamadas al API JDBC en llamadas propias del protocolo específico del bróker. Éste se encargará de traducirlas de nuevo en sentencias propias del motor de Base de Datos de cada caso. Ventajas: Buena solución cuando necesitamos acceder a Bases de Datos distintas y se quiere usar un único driver JDBC para acceder a las mismas. Al residir la traducción en el servidor del middleware, los clientes no necesitan librerías específicas, tan solo el driver. Inconvenientes: La desventaja principal reside en la configuración del servidor donde se encuentra el middleware. Necesitará librerías específicas para cada motor de base de datos distinto, etc. Tipo 4: Driver java puro (acceso directo a Base de Datos): “THIN”. Convierte o traduce las llamadas al API JDBC en llamadas al protocolo de red usado por el motor de bases de datos, lo que en realidad es una invocación directa al motor de bases de datos. Ventajas: 100 % portable. Buen rendimiento. El cliente sólo necesita el driver. Inconvenientes: Al ser independiente de la plataforma, no aprovecha las características específicas del S.O