[ES] Conectividad de java a base de datos(jdbc)

33
Let's Rock Java Fundamentos de Java Enterprise Edition con JDeveloper Eudris Cabrera Rodriguez Ingeniero Telemático Senior Software Developer Skype:eudriscabrera LinkedIn:http://www.linkedin.com/in/eudriscabrera Noviembre 2011, Santiago de los Caballeros, R. D.

description

Enseñar los conceptos fundamentales de conectividad de la plataforma Java a Base de Datos, mediante el uso del Java Database Connectivity API (JDBC).

Transcript of [ES] Conectividad de java a base de datos(jdbc)

Page 1: [ES] Conectividad de java a base  de datos(jdbc)

Let's Rock Java

Fundamentos de Java Enterprise Edition con JDeveloper

Eudris Cabrera Rodriguez

Ingeniero TelemáticoSenior Software DeveloperSkype:eudriscabreraLinkedIn:http://www.linkedin.com/in/eudriscabrera Noviembre 2011, Santiago de los Caballeros, R. D.

Page 2: [ES] Conectividad de java a base  de datos(jdbc)

Objetivos

Aprender los conceptos fundamentales de conectividad de la plataforma Java a Base de Datos, mediante el uso del Java Database Connectivity API (JDBC).

Page 3: [ES] Conectividad de java a base  de datos(jdbc)

Agenda○ Conectividad de Java a Base de Datos(JDBC)

■ Introducción a JDBC.■ Selección y Configuración del Driver.■ Creando una Conexión.■ Uso de Statements y ResultSets.

○ Realizar ejemplos de aplicaciones web interactuando

con la base de datos.

Page 4: [ES] Conectividad de java a base  de datos(jdbc)

Conectividad de Java a Base de Datos(JDBC)

Introducción a JDBC: Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice. El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos.

Page 5: [ES] Conectividad de java a base  de datos(jdbc)

Conectividad de Java a Base de Datos(JDBC)

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.

Page 6: [ES] Conectividad de java a base  de datos(jdbc)

Conectividad de Java a Base de Datos(JDBC)

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.

Page 7: [ES] Conectividad de java a base  de datos(jdbc)

Conectividad de Java a Base de Datos(JDBC)

A partir de allí puede realizar con cualquier tipo de tareas con la base de datos a las que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos, etc.

Page 8: [ES] Conectividad de java a base  de datos(jdbc)

Conectividad de Java a Base de Datos(JDBC)ARQUITECTURA JDBC

Page 9: [ES] Conectividad de java a base  de datos(jdbc)

Conectividad de Java a Base de Datos(JDBC)

JDBC-ODBC Bridge plus ODBC Driver

Page 10: [ES] Conectividad de java a base  de datos(jdbc)

Selección y Configuración del Driver Class.forName("Nombre del driver"); Con esta instrucción cargamos el driver de conexión a la base de datos en MySQL. El driver debe de ser incluido con el classpath para poder ser usado en el proyecto. // Carga dinámica del driverClass.forName("jdbc.DriverASCII")

Page 11: [ES] Conectividad de java a base  de datos(jdbc)

Creando una Conexión Luego de cargar el Driver, es necesario crear la conexión a la base de datos. Para ello usamos el método getConnection de la clase DriverManager (que implementa la clase Driver). A dicho método le pasamos como parámetro una URL de conexión a la base de datos, que se compone, por lo general, de tres partes separados por ":", jdbc:nombre_dbms:datos_de_conexion. Aunque esto depende del tipo de DMBS y conector que usemos.(Para más detalles de la URL, ver la documentación específica para el conector).

Page 12: [ES] Conectividad de java a base  de datos(jdbc)

Creando una Conexión

Este método además, devuelve un objeto Connection que usaremos para crear y ejecutar sentencias SQL, sobre la base de datos.

DriverManager static Connection getConnection(String especBD,String nombreUsuario,String clave)

Page 13: [ES] Conectividad de java a base  de datos(jdbc)

LET'S CODE !!!

Page 14: [ES] Conectividad de java a base  de datos(jdbc)

Uso de Statements y ResultSets createStatement(): este método crea/devuelve un objeto

Statement, con el cual podremos ejecutar sentencias en la base de datos. Statementvoid executeUpdate(String SQLupdateExpr)ResultSet executeQuery(String SQLqueryExpr) ExecuteQuery(): este método sirve para ejecutar consultas sobre la base de datos (para inserción y modificación de datos usar executeUpdate()). Recibe como parametro una sentencia SQL, y devuelve un objeto ResultSet que contendrá los datos de la consulta.

Page 15: [ES] Conectividad de java a base  de datos(jdbc)

Uso de Statements y ResultSets ResultSet

// Representa un conjunto de registros // que se pueden modificar iterativamente Bool next() String getString(String nombreColumna) Float getFloat (String nombreColumna)

Page 16: [ES] Conectividad de java a base  de datos(jdbc)

Excepciones generadas por JDBC

Las excepciones que manejamos son básicamente: ClassNotFoundException, que se lanzará por lo general cuando el programa no encuentre el Driver. SQLException, que se lanzará cuando hayan errores a nivel de SQL (errores al insertar datos, errores de sintaxis en las consultas, etc.).

Page 17: [ES] Conectividad de java a base  de datos(jdbc)

Uso básico de JDBC IIStatement stmt = con.createStatement(); stmt.executeUpdate( “CREATE TABLE CUENTA (...)”);stmt.executeUpdate(“INSERT INTO CUENTA (...)” + “VALUES (...)”);stmt.executeUpdate(“UPDATE CUENTA ...”);stmt.executeUpdate( “DELETE FROM CUENTA ...”);ResultSet rs = stmt.executeQuery( “SELECT ... FROM CUENTA, ...”); while(rs.next()) { String nombre = rs.getString(“nombre”); Integer dni = rs.getInteger(“dniCliente”); Integer cc = rs.getInteger(“numCuenta”); Integer s = rs.getInteger(“saldo”); System.out.println( nombre + “” + dni + “” + cc + “” + s); }

Page 18: [ES] Conectividad de java a base  de datos(jdbc)

Uso básico de JDBC

ClassforName(“jdbc.DriverASCII”); Connection con = DriverManager.getConnection( “jdbc:odbc:cuentas”, “rmoriyon”, “cursofse”);

Page 19: [ES] Conectividad de java a base  de datos(jdbc)

JDBC: Transacciones

con.setAutoCommit(false);stmt.execute... if (s > 1000) con.commit();else con.rollBack();

Page 20: [ES] Conectividad de java a base  de datos(jdbc)

LET'S CODE !!!

● Servlet Demo ● JSP Demo● Servlet + JSP

Hell yeah !.

Page 21: [ES] Conectividad de java a base  de datos(jdbc)

Cuando usar servlets y cuando usar páginas JSP ?. La pregunta es lógica, al fin y al cabo ambos mecanismos permiten generar contenidos dinámicos y además las JSP son servlets generados por el servidor de aplicaciones. La norma es que la mayor parte de las interacciones con el usuario se realizarán en las JSP debido a su flexibilidad, ya que integran de forma natural etiquetas HTML, XML, JSF, etc. Los servlets serán la excepción (un ejemplo típico es usar un servlet como controlador (un controlador recibe peticiones o eventos desde el interfaz de cliente y "sabe" elcomponente que debe invocar).

Page 22: [ES] Conectividad de java a base  de datos(jdbc)

Diversos escenarios de aplicación de la arquitectura JEE

Escenario basado en la web (web-centric application): La plataforma JEE no obliga a usar en un sistema todas las capas. Lo esencial es escoger el mecanismo adecuado para el problema. En este sentido, en ocasiones no hay (ni prevemos que haya) la complejidad como para requerir una capa EJB. Se denomina escenario web-centric porque el contenedor web es el que realiza gran parte del trabajo del sistema

Page 23: [ES] Conectividad de java a base  de datos(jdbc)

Diversos escenarios de aplicación de la arquitectura JEE

Escenario basado en la web (web-centric application):

Page 24: [ES] Conectividad de java a base  de datos(jdbc)

Diversos escenarios de aplicación de la arquitectura JEE

Escenario basado en la web (web-centric application): En este tipo de escenario la capa web implica tanto lógica de presentación como lógica de negocio. Pero lo deseable es no mezclar todas las cosas, planteando un diseño limpio y modular. Para ello las JSP y servlets no suelen acceder de forma directa a la base de datos, sino que lo hacen por medio de un servicio de acceso a datos.

Page 25: [ES] Conectividad de java a base  de datos(jdbc)

Diversos escenarios de aplicación de la arquitectura JEE

Escenario basado en la web (web-centric application):

El escenario web-centric es el más ampliamente utilizado actualmente.

Page 26: [ES] Conectividad de java a base  de datos(jdbc)

Nota sobre MVC Es muy usual utilizar el patrón MVC(Model View Controller ) como patrón arquitectónico. En este patrón el modelo representa los datos y las reglas de negocio que determinan el acceso y modificación de los datos. La vista traduce los contenidos del modelo a un o unos modos de presentación. Cuando el modelo cambia, es responsabilidad de la vista mantener la consistencia de la presentación.

Page 27: [ES] Conectividad de java a base  de datos(jdbc)

Nota sobre MVC El controlador define el comportamiento de la aplicación, es decir, asocia (map) las peticiones del usuario (captadas por botones, ítems de menú, etc.) con acciones realizadas por componentes del modelo. En una aplicación web las peticiones aparecen como peticiones HTTP que usan normalmente el método POST o GET para invocar a la capa web. El controlador es el responsable de seleccionar la vista que debe responder a la petición realizada por el usuario.

Page 28: [ES] Conectividad de java a base  de datos(jdbc)

Nota sobre MVC En el escenario web-centric que en bastantes ocasiones las aplicaciones no requieren acceder a múltiplessistemas empresariales, es decir, la capa de lógica de negocio no requiere fuerte conectividad distribuida con sistemas empresariales. No se contemplan EJBs, pero esto no significa que desaparezcan los componentes del modelo, sino que los servicios del modelo se implementan en JavaBeans (no Enterprise JavaBeans) para ser utilizados por Servlets/JSP dentro de la capa web

Page 29: [ES] Conectividad de java a base  de datos(jdbc)

Nota sobre MVC

Page 30: [ES] Conectividad de java a base  de datos(jdbc)

Nota sobre MVC En una aplicación centrada en la capa Web sigue existiendo, aunque sea ligera, un modelo, que contiene entidades y reglas de negocio; es decir, el que no sean necesarios los EJB no implica no modularizar, mezclarlo todo y eliminar los componentes del modelo. Nota: La especificación JEE no considera como componentes JEE a los Java Beans ya que son diferentes de los EJB (no confundirlos). La arquitectura de componentes JavaBeans se pueden utilizar tanto en la capa de cliente como de servidor,mientras que los componentes Enterprise JavaBeans sólo se utilizan en la capa de negocio como parte de los servicios delservidor.

Page 31: [ES] Conectividad de java a base  de datos(jdbc)

LET'S CODE !!!MVC DEMO

Page 32: [ES] Conectividad de java a base  de datos(jdbc)

PREGUNTAS ?

Page 33: [ES] Conectividad de java a base  de datos(jdbc)

WE ROCK JAVA !!!