JDBC
JDBC (Database
Connectivity):
I. CONTENIDO:
1. DEFINICIÓN:
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.
Tipos:
Existen 4 tipos de driver JDBC que
se detallan a continuación.
Dependiendo del DBMS y del tipo de
acceso a la base de datos que se utilice, puede ser necesario obtener uno u
otro tipo de driver JDBC. Generalmente se utilizan los drivers de tipo 4, que
se presentan a continuación junto con otros tipos de driver.
Tipo
1: Java – ODBC:
Esta arquitectura, tiene como
ventaja importante que permite la utilización de drivers ODBC existentes, pero
la desventaja de que hay que instalarlos en cada máquina, así como el cliente
de DBMS.
De esta forma, en el cliente se
requiere:
· DRIVERS JDBC
· DRIVERS ODBC (se crea un Data
Source con la información de conexión)
· CLIENTE DBMS
La aplicación GeneXus-Java se
comunica con los DRIVERS JDBC. A los DRIVERS JDBC se les configura un parámetro
para indicar que la conexión es a cierto Data Source. Y finalmente con la
información definida en el Data Source, se establece la conexión del cliente
con el Servidor Manejador de Base de Datos (DBMS).
Las implementaciones actuales de
estos drivers no son muy fiables, por lo que no se recomienda su utilización en
ambientes de producción. Sin embargo, existe un caso por el cual utilizar el
driver tipo 1: algunas versiones de AS/400 no soportan los dirvers JDBC, de
modo que la única forma de implementar una aplicación Java en 2 capas, en esos
casos, sería mediante este tipo de driver llamado también Bridge JDBC-ODBC.
Tipo 2: Java - Protocolo DBMS:
Con esta implementación, en el
cliente se tienen los DRIVERS JDBC que se comunican directamente (en forma
nativa) con el CLIENTE Oracle, Sybase, Informix, DB2, o cualquier otro DBMS.
De esta forma, entonces, al igual
que el driver de tipo 1, este también requiere que se instale en cada máquina
cliente, los DRIVERS JDBC y CLIENTE DBMS.
En general los drivers tipo 2,
también llamados Native-API Partly-Java,se comunican muy rápido con la base de
datos, siendo en teoría, los más performantes. Salvo por ésto, este tipo de
driver no presenta demasiadas ventajas con respecto a las otras alternativas.
Tipo 3: Java -Servidor JDBCv:
Esta clase de driver traduce
llamadas JDBC en un protocolo de red independiente del DBMS y luego, a un
protocolo de DBMS.
Un Servidor JDBC, realiza la tarea
de middleware, siendo capaz de conectar un cliente Java a diferentes bases de
datos.
La implementación del Servidor
JDBC se realiza mediante la instalación de un software que sabe “escuchar” los
requerimientos del CLIENTE JDBC y traducirlos a llamadas nativas para los
DBMSs.
Una ventaja que posee el driver
tipo 3, también conocido como net-protocol all-Java, es que no requiere
instalación en los clientes, según el DBMS. Como contrapartida, este driver
requiere la instalación del Servidor JDBC.
Merant DataDirect SequeLink Java
Edition es un driver de tipo 3 que se ha probado para SQL Server y Oracle.
Tipo 4: Java -> DBMS:
El driver tipo 4 convierte
llamadas JDBC directamente en el protocolo de red usado por el DBMS. Esto
permite llamadas directas desde la máquina del cliente al servidor del DBMS y
es una solución práctica para el acceso a Intranets.
Requieren más código, por lo que
si se usa en 2 capas hay que bajar más código al cliente, y la performance
suele ser algo menor que la de los otros drivers (esto puede depender mucho del
driver, de la cantidad de conexiones simultaneas, etc). De todas formas, este
es el tipo de driver más común, y el que se usa más en general.
Dado que muchos de estos
protocolos son propietarios, los proveedores de bases de datos son la principal
fuente de este tipo de driver.
Algunos ejemplos son:
· I-net Software
· WebLogic jDriver
· AsToolBox
· Merant
El driver tipo 4, también
denominado native-protocol all-Java, no requiere instalación en los clientes,
según el DBMS.
Aplicaciones:
TestConnection.java: Aplicación que permite comprobar
si se puede establecer una conexión exitosa con la base de datos
Appl_01.java: Aplicación que permite visualizar
las tablas existentes dentro de la base de datos.
Appl_02.java: Aplicación que visualiza los
discos e intérpretes dentro de la base de datos.
Appl_03.java: Aplicación que permite crear una
tabla con tres campos en la base de datos.
Appl_04.java: Aplicación que permite agregar
nuevo registro a la nueva tabla creada anteriormente con Appl_03.java
2. CAPA
DE ACCESO DE DATOS, CREACIÓ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 pueden 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 la base de datos de la CHA puede 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.
3. CONFIGURACION
DE CONEXIÓN MYSQL PARA EL PREYECTO NETBEANS:
· En el Proyecto-Librerías-Propiedades;
se debe descargar el driver que se Compile, quien se encarga de comunicar una
aplicación java con mysql. Después se configura el archivo .jar al conjunto de
librerías de la siguiente manera:
· Seleccionamos el proyecto, damos
clic derecho, luego clic en propiedades y vamos a la sección librerías dentro
de las propiedades.
· Seleccionamos la carpeta compile y
luego el botón Add library. En la ventana emergente Add Library hacemos clic en
el botón Manage Libraries, Add Library Manage Libraries
· En la venta Library Manager
hacemos clic en el nombre del botón New Library, luego en la ventana emergente
damos clic en el nombre de la librería y el tipo se deja el valor
predeterminado; luego damos clic en ok New Library.
· En la ventana Library Manager seleccionamos
la librería recién creada y hacemos clic en el botón Add JAR/Fólder, en la ubicación
del conector Add JAR/Fólder.
· Seleccionamos la ubicación del
conector de Mysql-Java y hacemos clic en el botón Add JAR/Fólder.
· Clic en el botón Ok, luego en el
botón Add Library y finalmente clic en el botón Ok. Librería Mysql.
· En la ventana anterior nos
ubicamos en RUNTIME y seleccionamos database y lo desplegamos, luego nos
ubicamos en Drivers y damos clic derecho y seleccionamos New Drivers. Runtime
Drivers New Drivers. Luego damos clic en Add y buscamos nuevamente el conector
mysql utilizado los pasos anteriores.
· Finalmente nos aparece en la
carpeta de Drivers el conector a Mysql, nos ubicamos en él y damos clic derecho
se despliega una ventana y damos clic en connect using.
· En la ventana que nos aparece se
digita la información, activamos la casilla de verificación y damos clic en OK.
Nombre de la base creada en Mysql usuario Contraseña.
· En esta ventana damos clic en OK y
finalmente nos aparece la conexión con las tablas creadas en mysql.
Para la gente del mundo Windows,
JDBC es para Java lo que ODBC es para Windows. Windows en general no sabe nada
acerca de las bases de datos, pero define el estándar ODBC consistente en un
conjunto de primitivas que cualquier driver o fuente ODBC debe ser capaz de
entender y manipular. Los programadores que a su vez deseen escribir programas
para manejar bases de datos genéricas en Windows utilizan las llamadas ODBC.
Con JDBC ocurre exactamente lo
mismo: JDBC es una especificación de un conjunto de clases y métodos de
operación que permiten a cualquier programa Java acceder a sistemas de bases de
datos de forma homogénea. Lógicamente, al igual que ODBC, la aplicación de Java
debe tener acceso a un driver JDBC adecuado. Este driver es el que implementa
la funcionalidad de todas las clases de acceso a datos y proporciona la
comunicación entre el API JDBC y la base de datos real.
La necesidad de JDBC, a pesar de
la existencia de ODBC, viene dada porque ODBC es un interfaz escrito en
lenguaje C, que, al no ser un lenguaje portable, haría que las aplicaciones
Java también perdiesen la portabilidad. Y, además, ODBC tiene el inconveniente
de que se ha de instalar manualmente en cada máquina; al contrario que los
drivers JDBC, que al estar escritos en Java son automáticamente instalables,
portables y seguros.
Toda la conectividad de bases de
datos de Java se basa en sentencias SQL, por lo que se hace imprescindible un
conocimiento adecuado de SQL para realizar cualquier clase de operación de
bases de datos. Aunque, afortunadamente, casi todos los entornos de desarrollo
Java ofrecen componentes visuales que proporcionan una funcionalidad
suficientemente potente sin necesidad de que sea necesario utilizar SQL, aunque
para usar directamente el JDK se haga imprescindible. La especificación JDBC
requiere que cualquier driver JDBC sea compatible con al menos el nivel «de
entrada» de ANSI SQL 92 (ANSI SQL 92 Entry Level).
4. USO
DE JDBC EN APLICACIONES JAVA:
JDBC
es una interfaz de programación de aplicaciones (API) que las aplicaciones Java
utilizan para acceder a las bases de datos relacionales. El soporte de IBM Data
Server para JDBC le permite grabar aplicaciones Java que acceden a datos
locales de DB2 o IBM Informix o a datos relacionales remotos de un servidor que
admite DRDA.
USO
DE LAS CLASES CONNECTION, DRIVERMANAGER
Connection
Un objeto Connection representa
una conexión a una base de datos. Una sesión con una conexión incluye las
sentencias SQL que son ejecutadas y los resultados que son devueltos a través
de dicha conexión. Una misma aplicación puede tener una o más conexiones con
una sola base de datos o puede tener conexiones con varias bases de datos
diferentes. La forma estándar de establecer una conexión con una base de datos
es llamando al método DriverManager.getConnection. Este método toma como
parámetro una cadena de caracteres que contiene una URL. La clase DriverManage
trata de localizar el driver que pueda conectar con la base de datos
representada por esa URL. El siguiente código ejemplifica cómo abrir una
conexión a una base de datos localizada en la URL “jdbc:odbc:wombat”: String
url = jdbc:odbc:wombat; Connection con = DriverManager.getConnection(url); Una
URL de JDBC facilita una forma de identificar una base de datos de forma que el
driver apropiado la reconozca y establezca una conexión con ella. La sintaxis estándar
para URLs de JDBC es la siguiente: Una
URL de JDBC tiene tres partes separadas por dos puntos: jdbc es el protocolo.
El protocolo en una URL JDBC es siempre jdbc. subclasses subclasses Connection
Statement PreparedStatement CallableStatement ResultSet Data Types
createStatement prepareStatement prepareCall executeQuery executeQuery
executeQuery getXXX getMoreResults getResultSet 78 Informática III es
usualmente el driver o el mecanismo de conectividad de la base de datos, el
cual debe ser soportado por uno o más drivers. Un ejemplo de un subprotocolo es
odbc, que ha sido reservado para URLs que especifican fuentes de datos de ODBC.
Por ejemplo, para acceder a una base de datos a través del Puente JDBC-ODBC se
usará una URL como la siguiente: jdbc:odbc:fred donde el subprotocolo es odbc y
el subnombre es fred, una fuente de datos ODBC. es una forma de identificar la
base de datos. Puede variar dependiendo del subprotocolo y puede tener un
subsubnombre con cualquier sintaxis interna que el programador del driver haya
elegido. La función del es dar la suficiente información para localizar la base
de datos.
Clase
drivermanager
Implementa la capa de gestión de
JDBC, y trabaja como intermediaria entre el usuario y los drivers. Guarda la
lista de los drivers que están disponibles y establece la conexión entre la
base de datos y el driver apropiado. Además la clase DriverManager se ocupa de
cosas cómo gestionar los límites de tiempo de ‘login’ en el driver y de la
salida de los mensajes de traza y log.
Para aplicaciones simples, el
único método en esta clase que necesita un programador general para su uso
directamente es DriverManager.getConnection. Como su nombre indica, este método
establece una conexión con la base de datos. JDBC permite al usuario llamar a los
métodos de DriverManager getDriver, getDrivers y registerDriver así como al
método de Driver connect, pero en la mayoría de los casos es preferible dejar
que la clase DriverManager gestione los detalles al establecer la conexión.
Mantenimiento
de la lista de drivers disponibles.
La clase DriverManager mantiene
una lista de clases disponibles que han sido registrados mediante el método
DriverManager.registerDriver. Todas las clases Driver deben escribirse con una
sección estática que cree una instancia de la clase y luego la registre en la
clase DriverManager cuando se cargue. Además el usuario normalmente no debería
llamar a DriverManager.registerDriver directamente; debería llamarse
automáticamente por el driver cuando esté se carga. Una clase Driver se carga,
y por tanto se registra, de dos formas diferentes:
a)
Mediante
una llamada al método Class.forName. Este carga explícitamente la clase driver.
Dado que no depende de ningún ‘setup’ externo, esta forma de cargar drivers es
la recomendada. El siguiente código carga la clase acme.db.Driver:
Class.forName("acme.db.Driver");
Si acme.db.Driver se ha escrito
para que al cargar produzca una instancia y llame al método
DriverManager.registerDriver con esta instancia como argumento (es lo que
debería hacer), entonces este estará en la lista de drivers disponibles para
efectuar la conexión.
b)
Mediante
la adición del driver a la propiedad jdbc.drivers de java.lang.System- Esta es
una lista de nombres de clases de drivers, separadas por dos puntos, que es la
que carga la clase DriverManager. Cuando la clase DriverManager se inicializa,
mira en la propiedad jdbc.drivers, y si el usuario ha introducido uno o más
drivers, la clase DriverManager intenta cargarlos. El siguiente código ilutsra
como un programador debería introducir estas tres clases en
~/.hotjava/properties
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver;
La primera llamada al método
DriverManager hará que estos drivers se carguen automáticamente.
Nótese que en esta segunda manera
de cargar los drivers es necesario una preparación del entorno que es
persistente. Si existe alguna duda sobre esto es preferible y más seguro llamar
al método Class.forName para cargar explicitamente cada driver. Este es también
el método que se usa para traer un driver particular puesto que una vez que la
clase DriverManager ha sido inicializada no chequeará la lista de propiedades
jdbc.drivers.
En ambos casos, es responsabilidad
de la clase Driver recién cargada registrarse a sí misma mediante una llamada a
DriverManager.registerDriver. Como se ha mencionado anteriormente, esto debería
hacerse automáticamente al cargar la clase.
Por razones de seguridad, la capa
de gestión de JDBC guardará traza de que clases de cargadores provee cada
driver. Entonces cuando la clase DriverManager abre una conexión solo usará los
drivers que vienen desde el sistema de ficheros local o desde las mismas clases
cargadoras como el código que solicita la conexión.
Establecer
una conexión:
Una vez que la clase Driver ha
sido cargada y registrada con la clase DriverManager, se está en condiciones de
establecer la conexión con la base de datos. La solicitud de la conexión se
realiza mediante una llamada al método DriverManager.getConnection, y DriverManager
testea los drivers regsitrados para ver si puede establecer la conexión.
A veces puede darse el caso de que
más de un driver JDBC pueda establecer la conexión para una URL dada. Por
ejemplo, cuando conectamos con una base de datos remota, podría ser posible
usar un driver puente JDBC-ODBC, o un driver JDBC de protocolo genérico de red,
o un driver suministrado por el vendedor.
En tales casos, el orden en que los
drivers son testeados es significante porque DriverManager usará el primer
driver que encuentre que pueda conectar con éxito a la base de datos.
Primero DriverManager intenta usar
cada driver en el orden en que ha sido registrado (los drivers listados en la
propiedad jdbc.drivers son siempre los registrados primero). Saltará cualquier
driver con código ‘untrusted’, a menos que se cargue desde el mismo código
fuente que el código que intenta abrir la conexión.
Testea los drivers mediante la
llamada al método Driver.connect cada uno por turno, pasándole como argumento
la URL que el usuario ha pasado originalmente al método
DriverManager.getConnection. El primer driver que reconozca la URL realiza la
conexión.
Una primera ojeda puede parecer
insuficiente, pero son necesarias solo unas pocas llamadas a procedimientos y
comparaciones de cadena por conexión puesto que no es probable que haya docenas
de drivers se carguen concurrentemente.
Es usualmente el driver o el
mecanismo de conectividad de la base de datos, el cual debe ser soportado por
uno o más drivers. Un ejemplo de un subprotocolo es ODBC, que ha sido reservado
para URLs que especifican fuentes de datos de ODBC. Por ejemplo, para acceder a
una base de datos a través del Puente JDBC-ODBC se usará una URL como la siguiente:
jdbc:odbc:fred donde el subprotocolo es odbc y el subnombre es fred, una fuente
de datos ODBC es una forma de identificar la base de datos. Puede variar
dependiendo del subprotocolo y puede tener un subsubnombre con cualquier
sintaxis interna que el programador del driver haya elegido. La función es dar
la suficiente información para localizar la base de datos.
EJEMPLOS:
a) En
el siguiente ejemplo, el código muestra, establece varias propiedades de
conexión en la URL de conexión y, a continuación, llama al método getConnection
de la clase DriverManager para devolver un objeto SQLServerConnection.
Después, el código muestra, usa el
método createStatement del objeto SQLServerConnection para crear un objeto
SQLServerStatement y, a continuación, se llama al método executeQuery para
ejecutar la instrucción SQL.
Finalmente, el ejemplo usa el
objeto SQLServerResultSet devuelto por el método executeQuery para procesar una
iteración mediante los resultados devueltos por la instrucción SQL.
import java.sql.*;
public class connectURL {
public static void main(String[] args) {
// Create a variable for the connection
string.
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;user=UserName;password=*****";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
// Create and execute an SQL statement
that returns some data.
String SQL = "SELECT TOP 10 *
FROM Person.Contact";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);
// Iterate through the data in the
result set and display it.
while (rs.next()) {
System.out.println(rs.getString(4)
+ " " + rs.getString(6));
}
}
// Handle any errors that may have
occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); }
catch(Exception e) {}
if (stmt != null) try { stmt.close();
} catch(Exception e) {}
if (con != null) try { con.close(); }
catch(Exception e) {}
}
}
}
b)
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());
}
}
}
}
II. RESUMEN:
JDBC (Java Database Connectivity)
es un API de Java que nos permite conectarnos con bases de datos y realizar
operaciones sobre ellas utilizando instrucciones SQL desde una aplicación Java.
Con JDBC tenemos una interfaz para conectarnos con una base de datos sin tener
que preocuparnos de si es una base de datos MySQl, Oracle, SQLServer o
cualquier otro tipo de base de datos. El único cambio que habría que hacer para
cambiar el tipo de base de datos de una aplicación sería cambiar el driver
especifico de la base de datos en cuestión.
JDBC es usado para enviar comandos
SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase,
etc.
JDBC establece una conexión con
una BD, envía sentencias SQL y procesa los resultados de la siguiente manera:
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 permite al usuario llamar a los métodos de Driver Manager get
Driver, get Drivers y register Driver asi como al método de Driver connect,
pero en la mayoria de los casos es preferible dejar que la clase Driver Manager
gestione los detalles al establecer la conexión.
La clase Driver Manager mantiene una lista de clases disponibles que han
sido registrados mediante el método Driver Manager. register Driver.
III. SUMMARY:
JDBC
(Java Database Connectivity) is a Java API that allows us to connect to
databases and perform operations on them using SQL statements from a Java
application. With JDBC we have an interface to connect with a database without
having to worry about whether it is a MySQl database, Oracle, SQLServer or any
other type of database. The only change that would have to be made to change
the database type of an application would be to change the specific driver of
the database in question.
JDBC
is used to send SQL commands to a relational database, which can be Oracle,
Infomix, SyBase, etc.
JDBC
establishes a connection to a DB, sends SQL statements and processes the
results as follows:
Connection
with = 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
allows the user to call the Driver Manager methods get Driver, get Drivers and
register Driver as well as the Driver connect method, but in most cases it is
preferable to let the Driver Manager class manage the details when establishing
the connection.
The
Driver Manager class maintains a list of available classes that have been
registered using the Driver Manager method. register Driver.
IV. RECOMENDACIONES:
· El controlador JDBC nativo está
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, 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.
· Para ejecutar Applets, en 2 capas, si
se utiliza el driver tipo 3, el Servidor JDBC deberá encontrarse en el mismo
host que el Servidor Web, por ser el Servidor JDBC el que resolvería la
conexión. En este caso, sería posible efectuar conexión con un DBMS que no se
encuentre en el mismo host que el Servidor Web.
· Para ejecutar Applets, en 2 capas, si
se utiliza el driver tipo 4, el DBMS deberá encontrarse en el mismo host que el
Servidor Web pues no se permite a un Applet establecer una conexión con otra
máquina que no sea el servidor de donde provino.
V. CONCLUSIONES:
Para
que exista un enlace remoto con la Base de Datos, la aplicación no debe de
conectarse directamente a la Base de Datos, sino que mediante los drivers JDBC
- ODBC.
Al
utilizar JDBC implica construir y ejecutar repetidamente sentencias SELECT,
INSERT, UPDATE y DELETE. Por lo tanto; se crea bastante código que estará muy
acoplado a la base de datos que estemos usando, lo que se tiene que hacer es
iterar manualmente sobre las propiedades de objetos como ResultSet cada vez que
consultemos algo en la base de datos. A su vez es muy costoso crear
PreparedStatements en cada caso por el mismo motivo de las iteraciones tendríamos
que gestionar manualmente el orden de las inserciones, actualizaciones y
borrados para que no hubiese problemas con la integridad referencial.
VI. APRECIACIÓN
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.
Con la ayuda de JDBC,
la habilidad de java para integrarse con DBMS comerciales y su naturaleza
orientada al manejo de la red, es posible crear un ambiente ideal de tipo
cliente-servidor. El API JDBC hace posible la realización de las siguientes
tareas:
· Establecer una conexión con una
base de datos.
· Enviar sentencias SQL.
· Manipular los datos.
· Procesar los resultados de la
ejecución de las sentencias.
VII. GLOSARIO
DE TÉRMINOS:
· Driver:
Es un programa que controla un dispositivo. Cada dispositivo, ya sea una
impresora, un teclado, etc., debe tener un programa controlador.
· JDBC: del inglés Java Database
Connectivity (Conectividad de base de datos Java).
· API: Es la interfaz de programación de
aplicaciones, se trata del conjunto de llamadas a ciertas bibliotecas que
ofrecen acceso a ciertos servicios desde los procesos y representa un método
para conseguir abstracción en la programación, generalmente (aunque no
necesariamente) entre los niveles o capas inferiores y los superiores del
software.
· ODBC: (Open DataBase Connectivity),
“Abrir Conectividad de Base de Datos”, el objetivo de ODBC es hacer posible el
acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema
de gestión de bases de datos(DBMS) almacene los datos.
· DBMS: Los sistemas de gestión de bases
de datos (SGBD) del inglés "Database Management System" (DBMS) son un
tipo de software muy específico, dedicado a servir de interfaz entre la base de
datos, el usuario y las aplicaciones que la utilizan.
· Middleware: Es un software que asiste a una
aplicación para interactuar o comunicarse con otras aplicaciones, o paquetes de
programas, redes, hardware y/o sistemas operativos.
· Mapeo: Objeto-relacional (más conocido
por su nombre en inglés, Object-Relational mapping, o sus siglas O/RM, ORM, y
O/R mapping) es una técnica de programación para convertir datos entre el
sistema de tipos utilizado en un lenguaje de programación orientado a objetos y
la utilización de una base de datos relacional como motor de persistencia.
· Acrónimo: El significado de un acrónimo es
la suma de los significados de las palabras que lo generan. Por ejemplo, el
término telemática procede de telecomunicación e informática, que a su vez es
acrónimo de información y automática.
· Testeo: Es la prueba del software o
investigaciones empíricas y técnicas cuyo objetivo es proporcionar información
objetiva e independiente sobre la calidad del producto a la parte interesada.
VIII. LINKOGRAFÍA:
· https://es.wikipedia.org/wiki/Capa_de_acceso_a_datos
· http://www.juntadeandalucia.es/servicios/madeja/contenido/subsistemas/arquitectura/capa-acceso-datos
· http://profesores.elo.utfsm.cl/~agv/elo330/2s03/projects/JDBC/jdbc-03.html
· http://profesores.fi-b.unam.mx/sun/Downloads/Java/jdbc.pdf
·
https://es.slideshare.net/secret/NcaE74Ng9Dcjjp
Comentarios
Publicar un comentario