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