jueves, 12 de octubre de 2017

CONNECTION








 
                                      "AÑO DEL BUEN SERVIDOR AL CIUDADANO"

                                           ESCUELA ACADÉMICA DE INGENIERÍA DE SISTEMAS Y TELEPÁTICA

                                                                                            ASIGNATURA
                                                                       LABORATORIO DE PROGRAMACIÓN II

                                                                                            TEMA
                                                                                          CONNECTION 

                                                                                           AUTORES
                                                                                   LUZ CLARITA PEREZ DIAZ
                                                                                   LUZ ISELA FLORES CHIGUEL
                                                                                   LUZ CLARITA CHILCON SANCHEZ

                                                                                               DOCENTE
                                                                                    ING.MARCO AURELIO PORRO CHULLI


                                                                                    BAGUA GRANDE-UTCUBAMBA 
                                                                                                     AMAZONAS


                                                                                                   2017

   Definición
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 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.
¿Qué es y que hace JDBC?
JDBC es una API de Java para ejecutar sentencias SQL. (Como punto de interés, JDBC es nombre de una marca registrada y no es un acrónimo, a pesar de todo, JDBC es a menudo interpretado como “Java DataBase Connectivity”). Consta de un conjunto de clases e interfaces escrito en lenguaje de programación Java.
Usando JDBC es fácil enviar sentencias SQL a virtualmente cualquier base de datos relacional. En otras palabras, con la API JDBC no es necesario escribir un programa para acceder a una base de datos tipo Access, otro programa para acceder a una base de datos tipo Oracle y así para cada tipo de base de datos. Uno puede escribir un solo programa usando la API JDBC y el programa será capaz de enviar sentencias SQL a la base de datos apropiada. Y, con una aplicación escrita en Java, uno no tiene por qué preocuparse por escribir diferentes programas para diferentes plataformas. La combinación de JDBC permite al programador escribir una vez y ejecutar en cualquier sitio.
Java, siendo robusto, seguro, fácil de usar, fácil de entender, y automáticamente descargable en una red, es un excelente lenguaje base para aplicaciones con bases de datos. Lo que es necesario es una forma para que las aplicaciones Java puedan entenderse con bases de datos de diferentes tipos. JDBC es el mecanismo para hacer esto.
JDBC extiende lo que puede hacerse con Java. Por ejemplo, con Java y la API de JDBC, es posible publicar una página web que usa información obtenida de una base de datos remota. O una compañía puede usar JDBC para conectar todos sus empleados (incluso si estos están usando un conglomerado de máquinas Windows, Macintosh y UNÍS) a una o más bases de datos internas vía una intranet.
De una forma simple, JDBC posibilita hacer tres cosas:
       Establecer una conexión con una base de datos
       Enviar sentencias SQL
       Procesar los resultados
.
 Controladores JDBC
Tipos de controladores (Drivers) de JDBC
Java puede acceder a la base de datos mediante un driver o controlador JDBC apropiado que pueda utilizar las clases que permiten el acceso a la base de datos. Existen diversos tipos de drivers, que utilizan distintos protocolos. En particular, en esta asignatura se utilizará el llamado Puente JDBC-ODBC, que se explicará más adelante.
Cómo obtener los Drivers de JDBC
Para conseguir la información actualizada sobre drivers, acceder a la página web sobre drivers para JDBC de Sun, donde se mantiene un registro actualizado de vendedores de drivers:
JDBC-ODBC Bridge
El Puente JDBC-ODBC es un controlador JDBC que implementa operaciones JDBC traduciéndolas en operaciones ODBC. Para ODBC aparece como una aplicación normal. El Puente implementa JDBC para cualquier base de datos para la cual haya disponible un driver ODBC.
El Puente está implementado en Java y usa métodos nativos de Java para llamar a ODBC. Se instala automáticamente con el Java Development Kit como el paquete sun.jdbc.odbc.
Si es posible, usar un driver JDBC 100% Java en lugar de un Puente y un driver ODBC. Esto elimina completamente la configuración en el cliente requerida por ODBC. 



JDBC 3.0 API
La JDBC 3.0 API comprende dos paquetes: 
       El paquete java.sql
       El paquete javax.sql, que añade capacidades de la parte servidor.
Los dos paquetes se consiguen automáticamente cuando se baja la Java 2 Platform, Standard Edition, Version 1.4 (J2SE) de la web de Sun.
Paquete java.sql
Provee la API para acceso y procesamiento de datos guardados en una fuente de datos (usualmente una base de datos relacional) usando el lenguaje de programación Java. Esta API incluye un ámbito donde diferentes drivers pueden ser instalados dinámicamente para acceder a diferentes fuentes de datos. Aunque la JDBC API está preparada principalmente para pasar sentencias SQL a una base de datos, permite leer y escribir datos desde cualquier fuente de datos con un formato tabular.

 Imágenes se muestra como agregar la librería MySQL JDBC Driver a Netbeans.





Cuando hayamos agregado las librerías podemos empezar a escribir el código de conexión:
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/base_datos",
"usuario", "contrasenia");

Este código establece la conexión localhost:3306 indica que nos conectaremos al servidor local en el puerto 3306, este es el puerto que es establece por defecto a la hora de la instalación de MySQL, lo cambiamos si lo necesitamos. 
base_datos es el nombre de la base de datos a la deseamos conectarnos. También indicamos el usuario y la contraseña.
statement = connection.createStatement();
resultSet = statement.executeQuery("select * from city");

Este es el código para ejecutar una consulta a la base de datos MySQL, select * from city es la consulta  SQL que deseamos ejecutar, la cambiamos para adaptarla a la base de datos de cada uno.
ResultSetMetaData metaData = resultSet.getMetaData();
            
int numberOfColumns = metaData.getColumnCount();
 
for (int i = 1; i <= numberOfColumns; i++) {
System.out.printf("%-8s\t", metaData.getColumnName( i ));
}
            
while (resultSet.next()) {
         for (int i = 1; i <= numberOfColumns; i++) {
                System.out.printf("%-8s\t", resultSet.getObject( i ));
                }
         System.out.println();
}

Para finalizar queremos mostrar los datos obtenidos por la consulta, por lo que primero obtenemos los nombres de la columnas y luego iteramos a través del resultSet para mostrar los datos.


   


Propiedades
Propiedades comunes de IBM Data Server Driver para JDBC y SQLJ para todos los productos de base de datos permitidos
La mayoría de las propiedades de IBM® Data Server Driver para JDBC y SQLJ son aplicables a todos los productos de base de datos que son compatibles con el controlador.
A menos que se indique otra cosa, todas las propiedades están contenidas en com.ibm.db2.jcc.DB2BaseDataSource.
Estas propiedades son las siguientes:

AffinityFailbackInterval
Especifica la longitud del intervalo, en segundos, que espera IBM Data Server Driver para JDBC y SQLJ antes de intentar transferir una conexión existente al servidor primario. Un valor igual o menor que 0 significa que la conexión no se transfiere. El valor por omisión es DB2BaseDataSource.NOT_SET (0).
Los intentos de restablecer las conexiones con el servidor primario se realizan en los límites de transacción, después de haber transcurrido el intervalo especificado.

affinityFailbackInterval se utiliza únicamente si los valores de las propiedades enableSeamlessFailover y enableClientAffinitiesList son DB2BaseDataSource.YES (1).

affinityFailbackInterval se aplica únicamente a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 4.

allowNextOnExhaustedResultSet
Especifica cómo IBM Data Server Driver para JDBC y SQLJ maneja una llamada de ResultSet.next() a un cursor de solo avance que está posicionado después de la última fila de ResultSet. El tipo de datos de esta propiedad es int.
Los valores posibles son:
DB2BaseDataSource.NOT_SET (0)
El comportamiento es el mismo que para DB2BaseDataSource.NO.
DB2BaseDataSource.YES (1)
IBM Data Server Driver para JDBC y SQLJ devuelve nulo cuando se utiliza Statement.executeQuery, PreparedStatement.executeQuery o CallableStatement.executeQuery para ejecutar una sentencia CALL para un procedimiento almacenado que no devuelve ningún conjunto de resultados. Este comportamiento no cumple el estándar de JDBC.
DB2BaseDataSource.NO (2)
IBM Data Server Driver para JDBC y SQLJ emite una SQLException cuando se utiliza Statement.executeQuery, PreparedStatement.executeQuery o CallableStatement.executeQuery para ejecutar una sentencia CALL para un procedimiento almacenado que no devuelve ningún conjunto de resultados. Este comportamiento cumple el estándar de JDBC.
atomicMultiRowInsert
Especifica si las operaciones de proceso por lotes que utilizan métodos PreparedStatement para modificar una tabla son atómicas o no atómicas. El tipo de datos de esta propiedad es int.
En el caso de las conexiones con DB2 para z/OS, esta propiedad se aplica únicamente a las operaciones INSERT de proceso por lotes.

En el caso de las conexiones con DB2 para Linux, UNIX y Windows o IBM Informix, esta propiedad se aplica únicamente a las operaciones INSERT, MERGE, UPDATE o DELETE.

Especifica un valor para el atributo de conexión CLIENT DEBUGINFO. Sirve para notificar al servidor de datos que los procedimientos almacenados y funciones definidas por el usuario que están haciendo uso de la conexión se están ejecutando en la modalidad de depuración. El atributo CLIENT DEBUGINFO es utilizado por el depurador unificado de DB2. El tipo de datos de esta propiedad es String. La longitud máxima es de 254 bytes.
Esta propiedad sólo se aplica a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 4.

clientRerouteAlternateServerName
Especifica uno o más nombres de servidores para el redireccionamiento del cliente. El tipo de datos de esta propiedad es String.
Cuando se especifica enableClientAffinitiesList=DB2BaseDataSource.YES (1), clientRerouteAlternateServerName debe contener el nombre del servidor primario y los nombres de los servidores alternativos. El servidor identificado por serverName y portNumber es el servidor primario. Ese nombre de servidor debe aparecer al comienzo de la lista especificada por clientRerouteAlternateServerName.

Si especifica más de un nombre de servidor, delimite los nombres con comas (,) o espacios en blanco. El número de valores especificados para clientRerouteAlternateServerName debe coincidir con el número de valores especificados para clientRerouteAlternatePortNumber.

clientRerouteAlternateServerName es aplicable a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 2 con DB2 para Linux, UNIX y Windows y IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 4.

clientRerouteAlternatePortNumber
Especifica uno o más números de puerto para el redireccionamiento del cliente. El tipo de datos de esta propiedad es String.
Cuando se especifica enableClientAffinitiesList=DB2BaseDataSource.YES (1), clientRerouteAlternatePortNumber debe contener el número de puerto del servidor primario y los números de puerto de los servidores alternativos. El servidor identificado por serverName y portNumber es el servidor primario. Ese número de puerto debe aparecer al comienzo de la lista especificada por clientRerouteAlternatePortNumber.

Si especifica más de un número de puerto, delimite los números de puerto con comas (,) o espacios en blanco. El número de valores especificados para clientRerouteAlternatePortNumber debe coincidir con el número de valores especificados para clientRerouteAlternateServerName.

clientRerouteAlternatePortNumber es aplicable a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 2 con DB2 para Linux, UNIX y Windows y IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 4.

clientRerouteServerListJNDIName
Identifica una referencia JNDI para una instancia de DB2ClientRerouteServerList en un depósito JNDI de información del servidor de redireccionamiento. La propiedad clientRerouteServerListJNDIName es aplicable solamente a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 4, y a las conexiones que se establecen mediante la interfaz DataSource.
Si el valor de clientRerouteServerListJNDIName no es nulo, clientRerouteServerListJNDIName proporcionará las funciones siguientes:
Permite conservar la información sobre servidores de redireccionamiento al pasar de una JVM a otra
Proporciona una ubicación de servidor alternativa si falla la primera conexión con la fuente de datos
clientRerouteServerListJNDIContext
Especifica el contexto de JNDI que se utiliza para la vinculación y la consulta de la instancia de DB2ClientRerouteServerList. La propiedad clientRerouteServerListJNDIContext es aplicable solamente a IBM Data Server Driver para JDBC y SQLJ con conectividad de tipo 4, y a las conexiones que se establecen mediante la interfaz DataSource.
Si no se define clientRerouteServerListJNDIContext, IBM Data Server Driver para JDBC y SQLJ creará un contexto inicial utilizando propiedades del sistema o el archivo jndi.properties.

clientRerouteServerListJNDIContext sólo se puede definir mediante el método siguiente:
public void setClientRerouteServerListJNDIContext(javax.naming.Context registro)
commandTimeout
Especifica el tiempo máximo en segundos que una aplicación que se ejecuta bajo IBM Data Server Driver para JDBC y SQLJ espera para que se completen las operaciones de SQL antes de que el controlador emita una SQLException. El tiempo de espera incluye el tiempo para obtener un transporte, realizar la migración tras error si es necesario, enviar la petición y esperar una respuesta. El tipo de datos de este parámetro es int. El valor por omisión es 0, lo cual significa que no hay tiempo de espera.
Si se invoca el método java.sql.Statement.setQueryTimeout, el valor de tiempo de espera de consulta que se establece a través de Statement.setQueryTimeout altera temporalmente el valor commandTimeout.

commandTimeout aplica a la ejecución de los métodos Statement, PreparedStatement y CallableStatement execute, executeQuery y executeUpdate. commandTimeout también aplica al método executeBatch si la propiedad queryTimeoutInterruptProcessingMode tiene el valor INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2).


Ejemplos
Ejemplo básico de MySQL con Java
Una vez instalado MySQL, descargado el driver para java de MySQL y con una base de datos y una tabla creada en MySQL, vamos a hacer un pequeño programa en java que nos permita conectarnos a la base de datos MySQL y consultar la tabla que hemos creado.
Instalar el Driver
En nuestro programa java, todos los import que necesitamos para manejar la base de datos están en java.sql.*. Puesto que casi todas los métodos relativos a base de datos pueden lanzar la excepción SQLException, meteremos todo nuestro programa en un try-catch.
Además, necesitamos la clase org.gjt.mm.mysql.Driver que viene con el driver de MySQL. Por ello, en nuestro CLASSPATH o incluido en nuestro proyecto con nuestro IDE favorito, debemos incluir el jar que contiene el driver MySQL (mysql-connector-java-3.1.7-bin.jar) o la versión más moderna y compatible con la versión de nuestro servidor de MySQL.
Lo primero que tenemos que hacer es asegurarnos que el Driver se inicializa y se registra, para ello
 
try
{
   Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
   e.printStackTrace();
}
Establecer la conexión con la base de datos
Debemos tener el servidor de MySQL arrancado. Si hemos instalado y dejado esa opción como estaba, cada vez que encendamos el ordenador, se arrancará el servidor de MySQL, por lo que no tenemos que preocuparnos por ello.
El servidor de MySQL abre por defecto el puerto 3306 para aceptar conexiones de posibles clientes, de programas que quieran conectarse y acceder a la base de datos. Nuestro programa java, si quiere consultar la tabla de base de datos que hemos creado, deberá conectarse a este servidor.
Para establecer la conexion, la clase DriverManager tiene métodos getConnection(). Usaremos uno de ellos
// Establecemos la conexión con la base de datos. 
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root", "la_clave");
El primer parámetro del método getConnection() es un String que contiene la url de la base de datos:
  • jdb:mysql porque estamos utilizando un driver jdbc para MySQL, que es el que nos hemos bajado.
  • localhost porque el servidor de base de datos, en mi caso, está en el mismo ordenador en el que voy a correr el prorama java. Aquí puede ponerse una IP o un nombre de máquina que esté en la red.
  • prueba es el nombre de la base de datos que he creado dentro de mysql. Se debe poner la base de datos dentro del servidor de MySQL a la que se quiere uno conectar. Es el nombre que pusimos cuando desde SQL hicimos create database prueba;
Los otros dos parámetros son dos String. Corresponden al nombre de usuario y password para acceder a la base de datos. Al instalar MySQL se crea el usuario root y se pide la password para él. Como no hemos creado otros usuarios, usaremos este mismo.
Si todo va bien, en conexion tendremos nuestra conexión a la base de datos.
Esta conexión es en realidad un socket entre java y la base de datos, aunque para nosotros es transparente. Lo que sí es importante, es saber que si varios hilos comparten esta conexión, deben usarla sincronizadamente. Si no se hace así, los mensajes que van por el socket se pueden entremezclar y los hilos pueden leer cachos de mensaje destinados al otro hilo. Otra opción es que cada hilo cree su propia conexión. Finalmente, la mejor opción de todas si nuestra aplicación va a tener varios hilos intentando acceder a la base de datos, es usar un Pool de conexiones.
Realizar una consulta
Para realizar cualquier acción sobre la base de datos (consulta, insertar nuevos registros, modificar los existentes o borrar), necesitamos una clase Statement. Para obtenerla, se le pide dicha clase a la conexión. La forma de hacerlo, para una consulta, es la siguiente:
// Preparamos la consulta 
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
La parte de createStatement() no tiene ningú secreto, salvo que puede lanzar una excepción que hay que capturar.
El Statement obtenido tiene un método executeQuery(). Este método sirve para realizar una consulta a base de datos.
  • El parámetro que se pasa en un String en el que está la consulta en lenguaje SQL. No hace falta terminarlo con punto y coma. En nuestro caso "select * from persona". siendo persona el nombre que hemos puesto a la tabla en la base de datos.
  • El resultado nos lo devuelve el método como un ResultSet. Este ResultSet no es más que una clase java similar a una lista en la que está el resultado de la consulta. Cada elemento de la lista es uno de los registros de la base de datos. En realidad, ResulSet no contiene todos los datos, sino que los va consiguiendo de la base de datos según se van pidiendo. Por ello, el método executeQuery() puede tardar poco, pero el recorrer los elementos del ResultSet no es tan rápido. De esta forma se evita que una consulta que dé muchos resultados tarde mucho tiempo y llene la memoria del programa java.
Leer los resultados
El ResultSet contiene dentro los registros leidos de la base de datos. Inicialmente, tal cual nos lo devuelve el Statement.executeQuery(), tiene internamente un "puntero" apuntando justo delante del primer registro. El método next() del ResultSet hace que dicho puntero avance al siguiente registro, en este caso, al primero. Si lo consigue, el método next() devuelve true. Si no lo consigue (no hay siguiente registro que leer), devuelve false.
Por tanto, una forma de ir leyendo los registros en meternos en un while.  
// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla. 
while (rs.next())
{
    System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}
Una vez que el "puntero" está apuntando a un registro, los métodos getInt()getString()getDate(), etc nos van devolviendo los valores de los campos de dicho registro. Podemos pasar a estos métodos un índice (que comienza en 1) para indicar qué columna de la tabla de base de datos deseamos. También podemos usar un String con el nombre de la columna (tal cual está en la tabla de base de datos).
Es responsabilidad nuestra saber qué tipo de dato hay en cada columna, aunque si nos equivocamos y RecordSet es capaz de hacer la conversión, la hará por nosotros. Por ejemplo, en cualquiera de los campos anteriores podemos pedir un getString() y nos devolveran los números como String y la fecha como String.
También podemos usar getObject(), y el RecordSet nos devolverá el Object más adecuado para el tipo de campo que pedimos.
Cerrar la conexión
Una vez que terminamos de usar la conexión, se debería cerrar, o bien terminar el programa, con lo que se cierra automáticamente.
// Cerramos la conexion a la base de datos. 

conexion.close();

Resumen
Open Database Connectivity (ODBC) es una interface de aplicaciones (API) para acceder a datos en sistemas gestores de bases de datos tanto relacionales como no relacionales, utilizando para ello SQL (Lenguaje de Consulta Estructurado). Todas las aplicaciones que soporten ODBC reconocerán una instrucción común de Lenguaje de Consulta Estructurado (SQL). Las aplicaciones ODBC o aplicaciones cliente envían peticiones a un servidor de bases de datos. El gestor del driver ODBC determina qué fuente de datos usar y qué driver ODBC puede comunicar con esa fuente de datos en particular. La petición se envía luego a través del driver al servidor – normalmente una aplicación de base de datos. Esta base de datos puede ser local, o en el mismo ordenador, o remota. Los datos solicitados se devuelven a través del gestor del driver ODBC, entonces a la aplicación del cliente. El lenguaje ODBC es una combinación de llamadas de función ODBC API y lenguaje SQL. Antes de continuar, es útil conocer los siguientes términos:  Sistema de Gestión de Bases de Datos (DBMS): Aplicación que permite a los usuarios almacenar, procesar, y recuperar información en una base de datos  Fuente de Datos (DSN): Los datos a los cuales quiere acceder (como a DBMS) e información para localizar datos (como la ruta o dirección IP)  Lenguaje de Consulta Estructurado (SQL): Un lenguaje de programación estándar que controla e interactúa con una DBMS  Aplicación Cliente: La aplicación que solicita datos (mediante SQL) de una fuente de datos usando ODBC Query: Recuperación, manipulación, o modificación de datos desde una fuente de datos enviando instrucciones SQL  Tabla: Recolección de datos cuya estructura lógica es en forma de campos (atributos) y registros es decir, columnas y filas.  Driver o controlador ODBC: Un fichero DLL, fichero conectado dinámicamente (Windows) que envía una consulta SQL para acceder a datos almacenados en una base de datos y entregar datos a la aplicación cliente


Summary
Open Database Connectivity (ODBC) is an application interface (API) for accessing data in both relational and non-relational database management systems using Structured Query Language (SQL). All applications that support ODBC will recognize a common Structured Query Language (SQL) statement. ODBC applications or client applications send requests to a database server. The ODBC driver determines which data source to use and which ODBC driver can communicate with that particular data source. The request is then sent via the driver to the server - usually a database application. This database can be local, or on the same computer, or remote. The requested data is returned through the ODBC driver manager, then to the client application. The ODBC language is a combination of ODBC API and SQL language function calls. Before proceeding, it is useful to know the following terms: Database Management System (DBMS): Application that allows users to store, process, and retrieve information in a database Data Source (DSN): Data to (such as DBMS) and information to locate data (such as the path or IP address) Structured Query Language (SQL): A standard programming language that controls and interacts with a DBMS Client Application: The application requesting data (using SQL) from a data source using ODBC Query: Retrieving, manipulating, or modifying data from a data source by sending SQL statements Table: Collecting data whose logical structure is in the form of fields (attributes) and records ie, columns and rows. Driver or ODBC driver: A DLL file, a dynamically connected file (Windows) that sends an SQL query to access data stored in a database and deliver data to the client application


Conclusiones
Una vez concluida la implementación de la aplicación Bank, los problemas más delicados estaban resueltos, pués se había conseguido, no sólo permitir la comunicación entre procesos de diferentes grupos en un mismo canal, sino que además, se había desarrollado un protocolo para transferencia cooperativa de estado. Ahora el problema se reduce a aplicar técnicas de ingeniería del software para obtener un modelo que, manteniendo la interfaz ofrecida por la API JDBC, fuése capaz de dotar de replicación y tolerancia a fallos a aplicaciones inicialmente no concebidas para soportar estas características.
Como resultado, se ha desarrollado la API javagroups.sql, un nuevo conjunto de clases e interfaces que ofrecen al usuario la posibilidad de convertir una aplicación centralizada de acceso a bases de datos en una aplicación distribuida y tolerante a fallos. Dado que esta nueva librería mantiene la interfaz ofrecida por la API JDBC (java.sql), el usuario podrá incorporar la nueva funcionalidad a sus aplicaciones sin necesidad de realizar grandes modificaciones al código.
Aún no se ha mencionado nada sobre la escalabilidad. Y es que el nuevo sistema permite aumentar el número de servidores en activo sin necesidad de detener su funcionamiento, es decir, continuará ofreciendo un servicio continuo incluso cuando se esté transfiriendo el estado de la base de datos a una nueva réplica. Notar también que la transferencia no se lleva a cabo desde un único servidor sino que cooperan todos los servidores disponibles.


 Apreciación del Equipo

v  Para mí fue muy elemental investigar en sí la definición del JDBC, y porque se caracteriza por ser un lenguaje muy utilizado.
Java con Base Datos como sabemos es un lenguaje que fue creado; pero con una gran diferencia que este lenguaje nos ayuda a tener un mayor seguridad en el programa que se está ejecutando

Glosario de términos



Abstraction (abstracción)
Propiedad y/o técnica de software que oculta los detalles de la implementación. Java soporta abstracción de clases y abstracción de métodos. La abstracción de métodos se define separando el uso de un método sin conocer como está implementado ese método. Si decide combinar la implementación, el programa cliente será afectado. De modo similar la abstracción de clases oculta la implementación de la clase del cliente.
Acoplamiento (coupling)
Medida del grado en el que un objeto o componente depende de otro. Bajo acoplamiento minimiza las dependencias y es una indicación de un buen diseño
Agregación (aggregation)
Relación en la que un objeto se compone o está construido de uno o más objetos, de modo que la colección completa representa un todo. Las relaciones de agregación se especifican entre clases y se reflejan en instancias de objetos
Algoritmo (algorithm)
Método que describe cómo se resuelve un problema en término de las acciones que se ejecutan y especifica el orden en que se ejecutan estas acciones. Los algoritmos ayudan al programador a planificar un programa antes de su escritura en un lenguaje de programación.
Ámbito de clase (scope
class)
Las variables privadas definidas fuera de los métodos internos a la clase tienen ámbito de clase. Son accesibles desde todos los métodos del interior de la clase, con independencia del rden en que están definidas. Los métodos privados también tiene ámbito de clase.
Análisis (análysis)
Proceso de identificación, modelado y descripción de lo que hace un sistema y de cómo trabaja
Aplicación (application)
Programa autónomo Java tal como cualquier programa escrito utilizando un lenguaje de alto nivel. Las aplicaciones se pueden ejecutar desde cualquier computadora con un interprete Java. Las aplicaciones no están sometidas a las restricciones impuestas los applets de

Java. Una clase aplicación debe contener un método main. Se utiliza como sinónimo de programa.
Applet
Tipo especial de programa Java que se puede ejecutar (correr) directamente en un navegador Web o en un visualizador applet. A un applet se le imponen diversas restricciones de seguridad. Por ejemplo, un applet no se puede ejecutar operaciones de entrada/salida en un sistema de usuario y por consiguiente no puede leer o escribir archivos o transmitir virus de computadora. 
Argumento (argument)
Información pasada a un método. Los argumentos se suelen llamar también parámetros. Unmétodo que espera recibir argumentos debe contener una declaración de argumentos formales por cada argumento actual como parte de la cabecera del mismo. Cuando se invoca a un método, los valores de los argumentos actuales 8reales) se copia en los correspondientes argumentos formales. Vease parámetro actual (actual parameter).
Array (array, vector, lista)
Objeto contenedor que almacena una secuencia indexada de los mismos tipos de datos. Normalmente los elementos individuales se referencian por el valor de un índice. El índice es un valor entero que , suele comenzar, en 0 para el primer elementos, 1 para el segundo y así sucesivamente.
Asignación (assignment)
Almacenamiento de un valor en una variable. La sentencia de asignación es aquella que implementa la asignación y utiliza un operador de asignación
Asociación (association)
Una relación entre dos clases tales como una instancia de una clase referencia a una instancia de otra clase.
Asociatividad (associativity)
Orden en que se envalúan operadores de igual precedencia o prioridad dentro de una expresión. La asociatividad por la izquierda produce una evaluación de izquierda a derecha y la asociatividad por la derecha conduce a una evaluación de derecha a izquierda. 
AWT (ABSTRACT WINDOW TOOLKIT)
Colección de clases (java.awt.*) que se utiliza para implementar interfaces gráficas de usuario. Contiene componentes tales como botones, etiquetas, campos de texto, áreas de texto, barras de desplazamiento, cajas de verificación y menús. Las clases de AWT proporcionan una interfaz independiente de la plataforma para desarrollo de programas visuales e interfaces gráficas de usuario.
Biblioteca de clases (class library)
Colección organizada de clases que proporciona un conjunto de componentes y abstracciones reutilizables
Binario (binary)
Representación numérica en base 2. En esta base sólo se utilizan los dígitos 0 y 1. Las posiciones de los d´digitos representan potencias sucesivas de 2. Véase bit.
Binding (ligadura)

Bit
Dígito binario que puede tomar dos valores posibles: 0 y 1. Los bits son elementos básicos de construcción de programas y datos
Bloque (block)
Sentencias y declaraciones encerradas entre una pareja de llaves (apertura y cierre, ´{´ y ´}´. Por ejemplo, un cuerpo

de una clase, es un bloque, al igual que el cuerpo de un método, Un bloque delimita un nivel de ámbito. 
Bolean (bolean, lógico)
Tipos primitivos de datos en Java. El tipo bolean puede tomar sólo dos valores: true (verdadero) y false ( falso ).
Bytecode (códigos de byte)
Resultado de la compilación del código fuente Java. La JVM (Java Virtual Machine) interpreta los bytecodes con la finalidad de ejecutar un programa Java. El bytecode es independiente de la máquina y se puede ejecutar en cualquier máquina que tenga un entorno de ejecución. Los bytecodes se almacenan en archivos class
Cabecera de la clase
(class header)
Cabecera de la definición de la clase. La cabecera proporciona un nombre a la clase y define sus accesos. También describe si es una clase ampliada (extends) de una superclase o implementa interfaces ( implements )
Clase (clase)
Colección encapsulada de datos y operaciones que actúan sobre los datos. El concepto de clase es fundamental en programación orientada a objetos. Una clase consta demétodos y datos. Los métodos de una clase definen el conjunto de operaciones permitidas sobre los datos de una clase (sus atributos). Una clase puede tener muchas instancia de la clase u objetos. 


bibliografia

https://es.wikipedia.org/wiki/Java_Database_Connectivity
http://www.chuidiang.org/java/mysql/EjemploJava.php
http://industry.java.sun.com/products/jdbc/drivers

acá les dejo un link de unas diapositivas de mi trabajo espero les guste.

https://www.slideshare.net/LUZCLARITAPEREZDIAZ/connection-80761667


No hay comentarios:

Publicar un comentario