JDBC





ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS Y TELEMÁTICA

 


     
                                                                      







 

                                




ÍNDICE:






1    JDBC (JAVA DATABASE CONNECTIVITY)

1.1    CAPA DE ACCESO DE DATOS:

1.1.1   Definición:

Una capa de acceso a datos o DAL (del inglés data access layer) en los programas informáticos, es una capa de un programa informático que proporciona acceso simplificado a los datos almacenados en el almacenamiento persistente de algún tipo, tal como una entidad-relación de base de datos. Este acrónimo se usa predominantemente en entornos Microsoft ASP.NET.
Por ejemplo, el DAL podría devolver una referencia al objeto (en términos de programación orientada a objetos) completo con sus atributos en lugar de un registro de campos de una tabla de la base de datos. Esto permite que los módulos del cliente (o usuario) se crearan con un mayor nivel de abstracción. Este tipo de modelo puede ser implementado mediante la creación de una clase de métodos de acceso a datos que hacen referencia directamente a un conjunto correspondiente de procedimientos almacenados de base de datos. Otra aplicación potencial podría recuperar o escribir registros hacia o desde un sistema de archivos. El DAL esconde esa complejidad del almacén de datos subyacente del mundo externo.
Por ejemplo, en lugar de utilizar comandos tales como insertar, eliminar y actualizar para acceder a una tabla específica en una base de datos, una clase y unos procedimientos almacenados se podrían crear en la base de datos. Los procedimientos se han llamado de un método dentro de la clase, lo que devolvería un objeto que contiene los valores solicitados. O bien los comandos inserción, eliminación y actualización podría ser ejecutado en funciones simples como registerUser o loginUser almacenada dentro de la capa de acceso a datos.
Además, los métodos de la lógica de negocio de una aplicación se pueden asignar a la capa de acceso a datos. Así, por ejemplo, en vez de hacer una consulta en una base de datos en busca de todos los usuarios de varias tablas de la aplicación puede llamar a un solo método de una DAL que abstrae las llamadas bases de datos.
Las aplicaciones que utilizan una capa de acceso a datos puede ser cualquiera de los servidores de base de datos dependiente o independiente. Si la capa de acceso a datos es compatible con varios tipos de bases de datos, la aplicación se vuelve capaz de utilizar lo que las bases de datos de la CHA pueden hablar. En cualquier circunstancia, que tiene una capa de acceso de datos proporciona una ubicación centralizada para todas las llamadas en la base de datos, y por lo tanto hace que sea más fácil de puerto de la aplicación a otros sistemas de bases de datos (suponiendo que el 100% de la interacción de base de datos se hace en la CHA para un dado aplicación).
Herramientas mapeo objeto-relacional proporcionan capas de datos de esta manera, siguiendo el modelo registro activo. El modelo ORM/active-record es popular entre los framework para aplicaciones web.

1.1.2   Componentes de la capa de acceso a datos:


 
























La capa de acceso a datos tiene dos tipos fundamentales de componentes:
  • Componentes de lógica de acceso a datos. Estos presentan una interfaz a la capa de negocio que abstrae de la forma en que se acceden a los datos almacenados, haciendo a la aplicación más fácil de configurar y mantener.
  • Componentes utilitarios y auxiliares. Consisten en librerías especializadas o APIs que permiten acceder, manipular o transformar los datos dentro de los componentes de lógica de acceso a datos. Por lo general son suministrados por el fabricante del gestor de base de datos (Oracle, IBM, etc.)

1.1.3     Factores a considerar al desarrollar la capa de acceso a datos:

  • Cree un diseño general de su capa de acceso a datos:
    1. Identifique los requerimientos de las fuentes de datos (data sources).
    2. Determine el enfoque de acceso a los datos.
    3. Elija como mapear estructuras de datos a los resultados de las fuentes de datos (data sources)
    4. Determine como conectarse a las fuentes de datos.
    5. Elija la estrategia para tratar errores de conexión con las fuentes de datos
  • Diseñe sus componentes de acceso a datos:
    1. Enumere las fuentes de datos a las que va a acceder.
    2. Decida el método de acceso para cada fuente de datos.
    3. Determine que componentes auxiliares o librerías son necesarios para facilitar el acceso a los datos, así como las tareas de desarrollo y mantenimiento
    4. Estudie si puede aplicar patrones de diseño en el acceso a los datos (Table Data Gateway, Query Object, Repository, etc.)
  • Diseñe sus componentes auxiliares
    1. Identifique que funcionalidades pueden moverse fuera de los componentes de acceso a datos y crear un componente auxiliar para su reutilización.
    2. Busque librerías de componentes auxiliares disponibles.
    3. Considere componentes auxiliares para solucionar problemas como conexiones, autenticación, monitorización o tratamiento de excepciones.
    4. Considere añadir logging a sus componentes auxiliares.

1.1.4    Consideraciones de diseño de la capa de acceso a datos:

  • Seleccione la tecnología adecuada de acceso a datos. La tecnología de acceso a datos depende del tipo y volumen de los datos que necesitamos. Determinadas tecnologías son mejores en determinados escenarios. Por ejemplo, la recuperación de miles de registros por una única clave y si no hay necesidad de consultas complejas, podría llevarnos a utilizar un gestor de base de datos NOSQL en vez de un gestor SQL relacional clásico.
  • Utilice la abstracción para implementar componentes de acceso a datos débilmente acoplados al sistema de gestión de base de datos. Esto nos permite no solo desarrollar cómodamente y mantener nuestra capa de acceso a datos, sino incluso migrar todos los datos de un gestor a otro con el mínimo o ningún impacto en nuestra aplicación Web
  • Considere la mapear los datos obtenidos en objetos o estructuras de datos que son más simples de procesar en la capa de negocio
  • Encapsule todas las funcionalidades de acceso a bases de datos dentro de la capa de acceso a datos. Esta capa tiene que ocultar a la capa de negocio todo lo relacionado con conexiones, mapeos y transformaciones básicas de datos, generar consultas, etc.
  • Decida cómo manejar las conexiones. Como regla, la capa de acceso a datos tiene que manejar todas las conexiones a todas las fuentes de datos requeridas por la aplicación. Estudie como almacenar y proteger acorde a sus requerimientos de seguridad, la información que describe a estas conexiones.
  • Determine como tratar las excepciones de datos. La capa de acceso a datos debe capturar todas las excepciones relacionadas con las fuentes de datos y las operaciones CRUD (Create, Read, Update Delete – Crear, Leer, Actualizar y Borrar) relacionadas con la base de datos. Las excepciones producidas por los datos solo deben pasarse a la capa de negocio si afectan la funcionalidad o la respuesta de usuario de la aplicación
  • Considere los riesgos de seguridad. La capa de acceso a datos debe de protegerse contra mecanismos de ataque que traten de borrar, corromper, alterar los datos o tomar control de la fuente de datos.
  • Reducir el tráfico de datos siempre que sea posible.
  • Considere el desempeño y la escalabilidad de la base de datos. Estudie los límites de acceso a datos de su aplicación. Realice pruebas de estrés y pruebas de carga que permitan encontrar esos límites acordes a las capacidades del entorno de Producción de su instalación. Recuerde que lo que en un entorno de test o de desarrollo es factible en términos de concurrencia, volumen de datos o respuesta de usuario no tiene nada que ver en un entorno de Internet con diferentes conexiones a diferentes velocidades, cientos o miles de usuario accediendo al mismo tiempo y miles de MB o GB transfiriéndose entre los servidores y los clientes en navegador que ejecutan nuestra aplicación

1.1.5   Problemas comunes en el diseño de la capa de acceso a datos:


Categoría
Problemas comunes
BLOB
  • Almacenamiento incorrecto de objetos binarios de gran tamaño como videos, fotos o archivos de datos en la base de datos en vez de en el sistema de archivos
  • Uso incorrecto del tipo BLOB en la base de datos
  • Búsqueda y manipulación de datos BLOB
Ejecución por lotes
  • Fallos al utilizar la ejecución por lotes para reducir el tráfico en la base de datos
  • Tratamiento de los bloqueos cuando se ejecutan procesos por lotes durante mucho tiempo
  • Fallo al elegir las ventanas horarias para tratar la base de datos con procesos por lotes
Conexiones
  • Configuración incorrecta del pool de conexiones
  • Fallos a la hora de manejar timeouts de conexiones y desconexiones
  • Ejecutar transacciones que abren múltiples conexiones
  • Mantener las conexiones abiertas durante períodos de tiempo excesivos
Formato de datos
  • Elección del formato incorrecto para los datos
  • Error al elegir el tipo de serialización
  • No mapear objetos contra las tablas del gestor de base de datos
Tratamiento de excepciones/ errores
  • No tratar las excepciones de datos
  • Fallo al no grabar en el log las excepciones críticas de acceso a datos
Consultas
  • Usar concatenación de cadenas a la hora de construir consultas
  • Mezclar las consultas con la lógica de negocio
  • No optimizar la base de datos para ejecutar consultas (no crear por ejemplo los índices necesarios o acceder por columnas que no son índice)
Procedimientos almacenados
  • No pasar correctamente los parámetros a los procedimientos almacenados
  • Implementar lógica de negocio en procedimientos almacenados
  • No considerar el impacto de sentencias SQL dinámicas en cuanto a rendimiento, seguridad y mantenimiento de la aplicación
Transacciones
  • Usar el nivel correcto de aislamiento
  • Utilizar bloqueos exclusivos que pueden provocar contención y dead-locks
  • Permitir que transacciones de larga duración bloqueen el acceso a los datos
Validación
  • Fallo al no validar los datos contra los tipos de campo
  • No tratar valores tipo NULL
  • No filtrar caracteres inválidos
XML
  • No considerar como tratar datos XML muy grandes
  • Fallo al validar entradas XML utilizando esquemas

1.2    CONFIGURACIÓN DE CONEXIÓN BD CON NETBEANS:

Conectar tus aplicaciones Java a un servidor de bases de datos es imprescindible para la funcionalidad de una solución de Software. Al igual que Sql server y C#Mysql y Java necesitan de una interfaz que proporcione las clases necesarias para gestionar una conexión.
Para comprender el funcionamiento de este enlace comenzaremos explicando cómo adherir el API de conexión a nuestros IDEs (en este caso veremos cómo hacerlo con Netbeans y Eclipse), luego implementaremos el código para abrir la conexión. En seguida veremos cómo ejecutar comandos y al finalizar estudiaremos la ejecución de procedimientos almacenados.

1.2.1   ¿Qué es el API De Conexión?


Es un conjunto de interfaces relacionadas que permiten realizar una conexión de un servidor de bases de datos a una aplicación Java. Normalmente se le denomina JDBC (Java Database Connectivity). La idea es usar un Driver que gestione el acceso a un servidor Mysql, y así abrir la conexión con la intención de ejecutar comandos en la base de datos.
NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans.
  • Primero que nada necesitas tener un servidor MySQL instalado en tu equipo o en su defecto en la máquina que actuará como servidor de bases de datos. Recuerda que MySQL es gratuito y puedes obtenerlo desde aquí.
ü  El proceso de instalación es algo en lo que no entraré en detalle, para cualquier duda puedes consultar la documentación oficial que se encuentra en su sitio web.
  • Asimismo, debes de tener el NetBeans instalado, de preferencia su última versión estable (al momento de esta publicación es la 5.5.1) que viene con el Java Development Kit (JDK) 1.6, lo anterior puedes obtenerlo desde aquí.
  • Una vez que tengas ambas herramientas instaladas necesitaras el driver o conector a la base de datos de MySQL que puedes obtener desde aquí.

1.2.2     Configurar NetBeans:

Una vez que hayas abierto el NetBeans localiza la sección de Runtime o Tiempo de ejecución que se localiza en el lado izquierdo de la pantalla, como se muestra a continuación:
Al expandir la sección de Databases o Bases de datos debe de aparecer el MySQL (Connector/J driver), en caso contrario debes de agregarlo manualmente como se describe a continuación:
  1. Da un clic derecho sobre Drivers y selecciona New Driver.
  1. En la ventana que aparece da clic en el botón de Add o Agregar y busca el archivo, dejar que descargaste anteriormente, el mismo que copiaste dentro de la carpeta del JDK.

3.   Una vez hecho lo anterior da clic en el botón de Ok o Aceptar.
Cuando realices los pasos anteriores debe de aparecer un elemento nuevo en la sección de Drivers dentro de Databases de nombre MySQL (Connector/J driver).
Crear y probar una conexión:
Dentro de la sección de Runtime o Tiempo de ejecución > Databases o Bases de datos >Drivers da un clic derecho sobre MySQL (Connector/J driver) y selecciona Connect Usingo Conectar usando... para que aparezca la pantalla de configuración de la conexión como se muestra a continuación:


En la sección de Name o Nombre selecciona MySQL (Connector/J driver), en la sección Database URL cambia la parte indicada por por la dirección del servidor de bases de datos, si es la misma computadora escribe localhost, en la parte de establece el puerto que definiste al instalar el servidor MySQL , por defecto es el 3306, en la sección de escribe el nombre de la base de datos a la cual te quieres conectar. Posteriormente escribe el nombre de usuario para accesar a la base de datos y la contraseña respectivamente.
Da un clic en el checkbox inferior para que NetBeans recuerde la contraseña durante la conexión.
Si todo se realizó correctamente podrás ver un nuevo elemento debajo del Driver con las especificaciones de la conexión actual, si das un clic en el símbolo '+' que aparece de lado izquierdo del mismo podrás ver las tablas de la base de datos y realizar consultas hacia la misma.
Implementar el código:
Hasta aquí ya hemos establecido la conexión a la base de datos y probado su funcionamiento desde el NetBeans, sin embargo, nos hace falta implementar el código directamente en una aplicación. Para este ejemplo crearemos una clase de nombre Conexión que se podrá reutilizar las veces que sea necesario en cualquier tipo de aplicación Java que requiera conectarse y realizar consultas a una base de datos en MySQL.
  1. Da un clic en el menú de File o Archivo que se localiza en la esquina superior izquierda de la ventana de NetBeans.
  2. Selecciona la opción de Nuevo Proyecto o New Project, posteriormente en la sección de Categories o Categorías selecciona General y en Projects o Proyectos seleccionaJava Application o Aplicación Java y da un clic en Siguiente.
  3. Posteriormente damos un nombre a la aplicación y definimos su ubicación, una vez hecho esto damos clic en el botón de Finish o Finalizar.


  4. En este momento aparece del lado izquierdo en la pestaña de Projects o Proyectos una especie de árbol jerárquico en el cual tenemos 4 carpetas, al dar clic en el símbolo '+' de la carpeta Source Packages o Paquetes Fuente nos desplegará el único paquete con el cual cuenta nuestra aplicación hasta este punto, dentro de él se crea la clase Main.
  5. Ahora debemos de dar un clic derecho sobre Source Packages o Paquetes Fuente y dar un nombre al paquete, en mi caso es database. Este paquete contendrá la clase desde la cual estaremos realizando todas las consultas a la base de datos.
  6. Posteriormente damos un clic derecho sobre el paquete recién creado y seleccionamos Nueva o New > Java Class. Posteriormente le damos el nombre de Conexión y damos clic en el botón de Finalizar o Finish.
  7. Dentro de la clase Conexión importamos algunas librerías.
  8. Finalmente compilamos el archivo localizándolo en el árbol jerárquico del lado izquierdo dando un clic derecho sobre él y seleccionando la opción de Compilar o Compile. Podrás utilizar la clase en cualquier parte de tu proyecto creando una instancia de la misma en el momento que sea necesario.
    *TIP: Crea únicamente una vez la conexión con el método crearConexion() desde la clase Main y pasa tu conexión como parámetro a todas las ventanas y módulos de la aplicación que la utilicen.
Una vez realizado lo anterior estarás listo para conectarte a bases de datos en MySQL desde NetBeans, la clase Conexión y el driver para MySQL puedes descargarlos este vínculo en un archivo comprimido tipo rar, este manual se encuentra en formato PDF desde este vínculo.
Si te gustó el artículo y te fue de utilidad te invito a que lo compartas con tus amigos desde los botones sociales (Twitter, Facebook, Google+). Puedes leer más Sobre el Autor o ponerte encontacto conmigo si así lo necesitas. 


1.3    JAVA DATABASE CONNECTIVITY(JDBC):

1.3.1   Definición:

Java Database Connectivity, más conocida por sus siglas JDBC, es una API (Interfaz de programación de aplicaciones) 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.
JDBC es un API (Application programming interface) que describe o define una librería estándar para acceso a fuentes de datos, principalmente orientado a Bases de Datos relacionales que usan SQL (Structured Query Language). JDBC no sólo provee un interfaz para acceso a motores de bases de datos, sino que también define una arquitectura estándar, para que los fabricantes puedan crear los drivers que permitan a las aplicaciones java el acceso a los datos.
Sun define JDBC como: 
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 cualquier tipo de tarea con la base de datos a la 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.
Un controlador o driver JDBC es un componente de software que permite a las aplicaciones escritas en Java interactuar con una base de datos.
Para conectar con bases de datos individuales, JDBC requiere controladores para cada base de datos. El controlador JDBC ofrece la conexión a la base de datos e implementa el protocolo para la transferencia de las consultas y resultados entre el cliente (aplicación) y la base de datos.

1.3.2   Tipos de JDBC:

Los drivers JDBC (equivalentes a ODBC) permiten efectuar conexiones con bases de datos.
Existen 4 tipos de driver JDBC que se detallan a continuación.
Tipo 1:
Los controladores de tipo 1 son controladores "puente". Utilizan otra tecnología, como por ejemplo, ODBC (Open Database Connectivity), para comunicarse con la base de datos. Esto representa una ventaja, ya que existen controladores ODBC para muchas plataformas RDBMS (sistemas de gestión de bases de datos relacionales). Se emplea la interfaz Java nativa (JNI) para llamar a funciones ODBC desde el controlador JDBC.
Un controlador de tipo 1 debe tener el controlador puente instalado y configurado para poder utilizar JDBC con él. Esto puede representar un grave inconveniente para una aplicación de producción. Los controladores de tipo 1 no pueden utilizarse en un applet, ya que los applets no pueden cargar código nativo.
Tipo 2:
Los controladores de tipo 2 utilizan una API nativa para comunicarse con un sistema de base de datos. Se utilizan métodos Java nativos para invocar las funciones de API que realizan operaciones de base de datos. Los controladores de tipo 2 son generalmente más rápidos que los controladores de tipo 1.
Los controladores de tipo 2 necesitan tener instalado y configurado código binario nativo para funcionar. Un controlador de tipo 2 siempre utiliza JNI. Los controladores de tipo 2 no pueden utilizarse en un applet, ya que los applets no pueden cargar código nativo. Un controlador JDBC de tipo 2 puede requerir la instalación de algún software de red DBMS (sistema de gestión de bases de datos).
El controlador JDBC de Developer Kit para Java es de tipo 2.

Tipo 3:
Estos controladores utilizan un protocolo de red y middleware para comunicarse con un servidor. A continuación, el servidor convierte el protocolo a llamadas de función DBMS específicas de DBMS.
Los controladores de tipo 3 son la solución JDBC más flexible, ya que no requieren ningún código binario nativo en el cliente. Un controlador de tipo 3 no necesita ninguna instalación de cliente.
Tipo 4:
El controlador de tipo 4 utiliza Java para implementar un protocolo de red de proveedores de DBMS. Puesto que los protocolos son generalmente de propiedad, los proveedores DBMS son generalmente las únicas empresas que suministran un controlador JDBC de tipo 4.
Los controladores de tipo 4 son todos ellos controladores Java. Esto significa que no existe ninguna instalación ni configuración de cliente. Sin embargo, un controlador de tipo 4 puede no ser adecuado para algunas aplicaciones si el protocolo subyacente no maneja adecuadamente cuestiones tales como la seguridad y la conectividad de red.

1.3.3   Aplicaciones JDBC:

La escritura de una aplicación JDBC tiene mucho en común con la escritura de una aplicación SQL en cualquier otro lenguaje.
En general, es necesario que realice las acciones siguientes:
  • Acceda a los paquetes de Java™ donde residen los métodos JDBC.
  • Declare variables para enviar datos a tablas de DB2 o recuperar datos de ellas.
  • Conecte con una fuente de datos.
  • Ejecute sentencias de SQL.
  • Trate los errores y avisos de SQL.
  • Desconecte de la fuente de datos.
Aunque las tareas que necesita realizar son similares a las que se ejecutan en otros lenguajes, la forma de ejecutarlas es algo diferente.

1.4    USO DEL JDBC EN APLICACIONES JAVA:

JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.
¿Qué hace JDBC?
Establece una conexión con una BD
Envía sentencias SQL
Procesa los resultados.
Connection con = DriverManager.getConnection ( "jdbc:odbc:wombat", "login", "password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) { int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c"); }
JDBC es una API de bajo nivel para APIS 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 enC.
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 necesario para poder desarrollar una solución “puramente de Java”.
Cargar un driver de base de datos y abrir conexiones:
La interfaz java.sql.Connection representa una conexión con una base de datos. Es una interfaz porque la implementación de una conexión depende de la red, del protocolo y del vendedor. El API JDBC ofrece dos vías diferentes para obtener conexiones. La primera utiliza la clase java.sql.DriverManager y es adecuada para acceder a bases de datos desde programas cliente escritos en Java. El segundo enfoque se basa en el acceso a bases de datos desde aplicaciones J2EE (Java 2 Enterprise Edition).
Consideremos cómo se obtienen las conexiones utilizando la clase 
java.sql.DriverManager. En una aplicación, podemos obtener una o más conexiones para una o más bases de datos utilizando drivers JDBC. Cada driver implementa la interfaz java.sql.Driver. Uno de los métodos que define esta interfaz es el método connect(), que permite establecer una conexión con la base de datos y obtener un objeto Connection.
En lugar de acceder directamente a clases que implementan la interfaz 
java.sql.Driver, el enfoque estándar para obtener conexiones es registrar cada driver con java.sql.DriverManager y utilizar los métodos proporcionados en esta clase para obtener conexiones. java.sql.DriverManager puede gestionar múltiples drivers. Antes de entrar en los detalles de este enfoque, es preciso entender cómo JDBC representa la URL de una base de datos. 
Los URL de JDBC: 
La noción de un URL en JDBC es muy similar al modo típico de utilizar los URL. Los URL de JDBC proporcionan un modo de identificar un driver de base de datos. Un URL de JDBC representa un driver y la información adicional necesaria para localizar una base de datos y conectar a ella. Su sintaxis es la siguiente: 
jdbc:<subprotocol>:<subname> 
Existen tres partes separadas por dos puntos:
  • Protocolo: En la sintaxis anterior, jdbc es el protocolo. Éste es el único protocolo permitido en JDBC.
  • Subprotocolo: Utilizado para identificar el driver que utiliza la API JDBC para acceder al servidor de bases de datos. Este nombre depende de cada fabricante.
  • Subnombre: La sintaxis del subnombre es específica del driver.
Por ejemplo, para una base de datos MySQL llamada ``Bank'', el URL al que debe conectar es: 
jdbc:mysql:Bank 
Alternativamente, si estuviéramos utilizando Oracle mediante el puente JDBC-ODBC, nuestro URL sería: 
jdbc:odbc:Bank 
Como puede ver, los URL de JDBC son lo suficientemente flexibles como para especificar información específica del driver en el subnombre. 
Clase DriverManager:
El propósito de la clase java.sql.DriverManager (gestor de drivers) es proporcionar una capa de acceso común encima de diferentes drivers de base de datos utilizados en una aplicación. En este enfoque, en lugar de utilizar clases de implementación Driverdirectamente, las aplicaciones utilizan la clase DriverManager para obtener conexiones. Esta clase ofrece tres métodos estáticos para obtener conexiones.
Sin embargo, DriverManager requiere que cada driver que necesite la aplicación sea registrado antes de su uso, de modo que el DriverManager sepa que está ahí.
1.5 Ejemplos JDBC:
Se asume que se tiene instalado una DBMS Oracle 8i (versión 8.1.6) y que se puede conectar usando el driver de JDBC. 
Brevemente estos ejemplos muestran cómo conectarse a la Base de Datos y usar sentencias SQL simples como "select", "insert", "update" y "delete". 
Algunos ejemplos simples:
driver_ver.java: Despliega la versión del driver. 
driver_check.java: Chequea si corren los drivers correctamente. 
tab_sel.java Select: a una tabla. 
tab_upd.java: Modifica registros en una tabla. 
tab_del.java: Borra registros de una tabla. 
tab_ins.java: Inserta registros hacia una tabla. 
tabprep_upd.java: Como usar una sentencia de preparación con un "update". 

Otros ejemplos: 
call_sp.java: Llamado a un procedimiento de Oracle. 
call_sf.java: Llama a una función de Oracle. 
excep_1.java: Manejo de excepciones (1). 
excep_2.java: Manejo de excepciones (2). 
meta_data1.java: Meta-datos. Cómo manejar un "select *". 
meta_data2.java: Más métodos con meta-datos , cómo obtener los nombres de los campos. 
meta_data3:java: Más métodos con meta-datos (*). 
meta_data4.java: Detalles sobre las palabras claves no estándares de la BD. 
meta_data5.java: Cómo encontrar el largo máximo de un nombre de un campo.
meta_data6.java: Tipos de tablas permitidos. 
tab_preupdtran.java: Cómo setear una transacción. 
tab_preupdrb.java: Cómo ejecutar un "rollback".
En este ejemplo se crea la conexión y los prepareStatements en el constructor por lo que luego podemos usarlo sin tener que crear una nueva conexión para insertar un nuevo dato, pero no cerramos nunca la conexión porque si la cerrásemos como se está creando en el constructor ya no se podría volver a usar.
Ejemplo 1: Conexión a una base de datos MySQL y consulta de una tabla.
import java.sql.*;
public class EjemploAccesoBD1 {
    public static void main(String[] args) {
        Connection conexion = null;
        try {
            // Cargar el driver
            Class.forName("com.mysql.jdbc.Driver");

            // Se obtiene una conexión con la base de datos.
            // En este caso nos conectamos a la base de datos prueba
            // con el usuario root y contraseña 1daw
  conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1daw");

            // Se crea un Statement, para realizar la consulta
            Statement s = conexion.createStatement();

            // Se realiza la consulta. Los resultados se guardan en el ResultSet rs
            ResultSet rs = s.executeQuery("select * from persona");

            // Se recorre el ResultSet, mostrando por pantalla los resultados.
            while (rs.next()) {
                System.out.println(rs.getInt("Id") + " " + rs.getString(2) + " " + rs.getDate(3));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        } finally { // Se cierra la conexión con la base de datos.
            try {
                if (conexion != null) {
                    conexion.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}

Ejemplo 2: Crear una tabla e insertar datos.
Crearemos la tabla contactos dentro de la base de datos prueba.
import java.sql.*;
public class EjemploAccesoBD2 {
    public static void main(String[] args) {
        Connection conexion = null;
        try {
            // Cargar el driver
            Class.forName("com.mysql.jdbc.Driver");

            // Se obtiene una conexión con la base de datos.
    conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1daw");

            // Se crea un Statement, para realizar el query
            Statement s = conexion.createStatement();

            //se crea una tabla nueva
            s.executeUpdate("CREATE TABLE contacto (id INT AUTO_INCREMENT,
                                      PRIMARY KEY(id), nombre VARCHAR(20),
                                      apellidos VARCHAR(20), telefono VARCHAR(20))");

            //Los datos que vamos a insertar los tenemos en 3 arrays
            String nombres[] = {"Juan", "Pedro", "Antonio"};
            String apellidos[] = {"Gomez", "Lopez", "Alvarez"};
            String telefonos[] = {"987452154", "989654125", "985321478"};

            //se insertan datos en la tabla
            for (int i = 0; i < nombres.length; i++) {
                s.executeUpdate("INSERT INTO contacto (nombre, apellidos, telefono)
                     VALUES ('" + nombres[i] + "','" + apellidos[i] + "','" + telefonos[i] + "' )");
            }

            // Se realiza una consulta sobre la tabla contacto.
            ResultSet rs = s.executeQuery("select * from contacto");

            // Se recorre el ResultSet, mostrando por pantalla los resultados.
            while (rs.next()) {
                System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " +
                                            rs.getString(3) + " " + rs.getString(4));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        } finally { // Se cierra la conexión con la base de datos.
            try {
                if (conexion != null) {
                    conexion.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}
Ejemplo 3: Modificar el teléfono del primer contacto de la tabla persona con nombre Juan.
import java.sql.*;
public class EjemploAccesoBD3 {
    public static void main(String[] args) {
        Connection conexion = null;
        int id;
        try {
            // Cargar el driver
            Class.forName("com.mysql.jdbc.Driver");

            // Se obtiene una conexión con la base de datos.
    conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1daw");

            // Se crea un Statement, para realizar el query
            Statement s = conexion.createStatement();
           
            // Se realiza la consulta
            // Queremos obtener el id del primer contacto con nombre Juan
            ResultSet rs = s.executeQuery("SELECT id FROM contacto WHERE nombre='Juan'");
           
            
            if(rs.next()){   //Si rs.next() devuelve true significa que al menos hay un registro
               id = rs.getInt("id");  //se obtienen su id
               //se actualiza el registro
               s.executeUpdate("UPDATE contacto SET telefono='987654321' WHERE id="+id);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        } finally { // Se cierra la conexión con la base de datos.
            try {
                if (conexion != null) {
                    conexion.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}

2    RESUMEN:

JDBC es el API para la ejecución de sentencias SQL. (Como punto de interés JDBC) es una marca registrada y no un acrónimo, no obstante a menudo es conocido como “Java Database Connectivity”).  Consiste en un conjunto de clases e interfaces escritas en el lenguaje de programación Java. JDBC suministra un API estándar para los desarrolladores y hace posible escribir aplicaciones de base de datos usando un API puro Java.
Usando JDBC es fácil enviar sentencias SQL virtualmente a cualquier sistema de base de datos. En otras palabras, con el API JDBC, no es necesario escribir un programa que acceda a una base de datos Sybase, otro para acceder a Oracle y otro para acceder a Informix. Un único programa escrito usando el API JDBC y el programa será capaz de enviar sentencias SQL a la base de datos apropiada. Y, con una aplicación escrita en el lenguaje de programación Java, tampoco es necesario escribir diferentes aplicaciones para ejecutar en diferentes plataformas. La combinación de Java y JDBC permite al programador escribir una sola vez y ejecutarlo en cualquier entorno. Java, siendo robusto, seguro,  fácil de usar, fácil de entender, y descargable automáticamente desde la red, es un lenguaje base excelente para aplicaciones de base de datos. JDBC expande las posibilidades de Java. Por ejemplo, con Java y JDBC API, es posible publicar una página web que contenga un applet que usa información obtenida de una base de datos remota. O una empresa puede usar JDBC para conectar a todos sus empleados (incluso si usan un conglomerado de máquinas Windows, Macintosh y UNIX) a una base de datos interna vía intranet. Con cada vez más y más programadores desarrollando en lenguaje Java, la necesidad de acceso fácil a base de datos desde Java continúa creciendo.

3    SUMMARY:

JDBC is the API for executing SQL statements. (As a point of interest JDBC) is a registered trademark and not an acronym, however it is often known as "Java Database Connectivity"). It consists of a set of classes and interfaces written in the Java programming language. JDBC provides a standard API for developers and makes it possible to write database applications using a pure Java API.
Using JDBC is easy to send SQL statements to virtually any database system. In other words, with the JDBC API, you need not write a program to access a Sybase database, another to access Oracle and another to access Informix. A unique program written using the JDBC API and the program will be able to send SQL statements to the appropriate database. And a written in the Java programming language application, it is not necessary to write different applications to run on different platforms. The combination of Java and JDBC allows the programmer write once and run in any environment. Java, being robust, secure, easy to use, easy to understand, and automatically downloadable from the network, it is an excellent language basis for database applications. JDBC Java expands the possibilities. For example, Java and JDBC API, you can publish a Web page that contains an applet that uses information obtained from a remote database. Or a company can use JDBC to connect to all employees (even if using a conglomeration of Windows, Macintosh and UNIX machines) to an internal database via intranet. With more and more programmers developing in Java, the need for easy access to database from Java continues to grow.

4    Recomendaciones para un mejor uso y manejo de JDBC:

El controlador JDBC nativo se ha diseñado para ser una interfaz Java™ de alto rendimiento que permita trabajar con la base de datos. Sin embargo, para obtener el mejor rendimiento posible, es necesario crear las aplicaciones de manera que aprovechen el potencial que puede ofrecer el controlador JDBC nativo. Los siguientes consejos pretenden llevar a la práctica las mejores técnicas de programación JDBC. La mayoría de ellos no son específicos del controlador JDBC nativo. Por tanto, las aplicaciones que se escriban de acuerdo con estas directrices también tendrán un buen rendimiento si se emplean con controladores JDBC distintos del nativo.
ü   Evitar consultas SQL SELECT *
SELECT * FROM... es una forma muy habitual de establecer una consulta en SQL. Sin embargo, muchas veces no es necesario consultar todos los campos. Para cada columna que hay que devolver, el controlador JDBC tiene que hacer el trabajo adicional de enlazar y devolver la fila. Aún en el caso de que la aplicación no llegue a utilizar nunca una columna concreta, el controlador JDBC debe tenerla presente y reservar espacio por si se utiliza. Esta cuestión no supone una actividad general significativa si son pocas las columnas que no se utilizan de las tablas. Sin embargo, si son numerosas las columnas no utilizadas, la actividad general puede llegar a ser significativa. En tal caso, sería mejor listar individualmente las columnas que a la aplicación le interesa consultar, como en este ejemplo: SELECT COL1, COL2, COL3 FROM...
ü  Evitar llamadas a DatabaseMetaData:
Conviene tener en cuenta que algunas de las llamadas a databasemetadata pueden ser costosas. En particular, los métodos getbestrowidentifier, getcrossreference, getexportedkeys y getimportedkeys pueden resultar costosos. Algunas llamadas a databasemetadata implican complejas condiciones de unión sobre tablas a nivel del sistema. Únicamente se deben emplear cuando se necesita la información que proporcionan, no porque resulte más práctico.

5    CONCLUCIONES:

La conectividad de base de datos de Java, conocida por sus siglas JDBC, es un API (Interfaz de programación de aplicaciones) 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.
JDBC es un API (Application programming interface) que describe o define una librería estándar para acceso a fuentes de datos, principalmente orientado a Bases de Datos relacionales que usan SQL (Structured Query Language). JDBC no sólo provee un interfaz para acceso a motores de bases de datos, sino que también define una arquitectura estándar, para que los fabricantes puedan crear los drivers que permitan a las aplicaciones java el acceso a los datos.

ü  El API de 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 controlador o driver JDBC es un componente de software que permite a las aplicaciones escritas en Java interactuar con una base de datos.

ü  El controlador JDBC ofrece la conexión a la base de datos e implementa el protocolo para la transferencia de las consultas y resultados entre el cliente (aplicación) y la base de datos.

6    APRECIACIONES DEL EQUIPO:

JDBC es un Interfaz de programación de aplicaciones 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.
Además, podemos decir que JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.

7    GLOSARIO DE TÉRMINOS:

ü  Abstraer: Separar por medio de una operación intelectual una cualidad de la cosa en la que existe y considerarla aisladamente de esta cosa.
ü  Utilitarios: Es un término por el cual se identifica a un vehículo automotor de carga
ü  Data sources: Fuente de datos.
ü  Table Data Gateway: Tabla de puerta de enlace de datos.
ü  Query Object: Objetos de consulta.
ü  Repository: Repositorio.
ü  Migrar: Dejar lugar de residencia para establecerse temporal o definitivamente en otro país o región.
ü  CRUD: Crear, Leer, Actualizar, Borrar.
ü  Escalabilidad: Es un término usado en tecnología para referirse a la propiedad de aumentar la capacidad de trabajo o de tamaño de un sistema sin comprometer el funcionamiento y calidad normales del mismo.
ü  Convencional: Significa reunir las características de lo que es habitual o tradicional.
ü  Suministrar: Proporcionar o poner al alcance de una persona o cosa algo que necesita.

8      LINKOGRAFÍA:

ü  http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoria-ivan/node8.html
ü  http://monillo007.blogspot.com/2007/11/conectar-una-base-de-datos-en-mysql-con.html
http://es.slideshare.net/LisbethOcaaBueno/jdbc-66113833

Comentarios

  1. Bien elaborada la PRESENTACION. Defina claramente las CONCLUSIONES y RECOMENDACIONES. Detalle la APRECIACION con sus propias palabras. Trabajo bien desarrollado y explicado. Proponga un foro de discusión sobre el tema Gracias por su investigación.Saludos

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS