SPRING JDBC Curso: Programación orientada a objetos

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Las aplicaciones requieren datos persistentes
Acceso a Bases de Datos con Java
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
Curso de java básico (scjp)
Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Lenguaje de programación Java
Acceso a bases de datos con MySQL y ODBC desde PHP
Arquitectura CLARO-TECNOTREE
PATRON DAO Data Access Object (OBJETO DE ACCESO A DATOS)
"java del lado del servidor" Servlet y JSP Java Server Pages.
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Spring Framework v2.5.
Teoría de los lenguajes Proyecto SIGU Equipo Nº3 Universidad Argentina J. F. Kennedy Sede: Don Bosco Integrantes: Irene Arias Fernández Mariana Pacheco.
Lenguaje de consulta de Hibernate
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
RMI Remote Method Invocation
Oracle, orientado a objetos
Cursores Implícitos y Explícitos
JAVA Persistence API (JPA)
TECNOLOGÍA IDC Internet Database Connector Trinitario Gómez López.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación EXCEPCIONES EN JAVA Diciembre de 2008.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Acceso a datos con ADO.NET
Tema 6: Clases Antonio J. Sierra.
Bases de Datos Relacionales
ARCHIVOS Y CONEXIÓN A BASE DE DATOS. FileInputStream: Clase que representa ficheros de texto accedidos en orden secuencial, byte a byte. FileWriter: Clase.
Semana 5 Subprogramas..
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
DISEÑO DE SOFTWARE 1ª. Parte
SPRING MVC.
Sistema de Gestión de Información Desarrollado por: Solange Ahumada K Bernardo Malet
Colegio de Bachilleres Plantel 13 Xochimilco-Tepepan Integrantes: Karen Elizabeth González Monroy Elizabeth De Jesús Vergara Grupo:308.
Manejo de Base de Datos en Java Ing. Esp. Ricardo Cujar.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CUATRO CONTROL DE FLUJOS, EXCEPCIONES Y ASERSIONES.
Control de errores visual basic
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
1 TEMA 8. Acceso a bases de datos Arquitectura de una aplicación que accede a una BD Arquitectura de una aplicación que accede a una BD Establecer la conexión.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
Excepciones Unidad 5.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
Java Data Base Connectivity
SPRING JDBC Curso: Programación orientada a objetos
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
Manual Desarrollo Flex – J2EE. Contenidos Análisis y Diseño 1 Implementación 2 J2EE 3 Pruebas 4.
Tema 11 Bases de Datos y el Lenguaje SQL
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
API JDBC Java Database Connectivity. Conceptos básicos API de Conectividad a Bases de Datos Emplea SQL Standard Ventaja: los programas desarrollados en.
Acceso a Datos Erick López Ovando Licenciado en Informática.
JDBC. Definición Java Database Conectivity El acceso a bases de datos JDBC implica abrir una conexión ejecutar comandos SQL en un sentencia procesar los.
Programación Orientada a Objetos: CLASES Y OBJETOS
ECOM-6030 CAPÍTULO 7 EXCEPTION HANDLING Prof. Nelliud D. Torres © - Derechos Reservados.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
Transcripción de la presentación:

SPRING JDBC Curso: Programación orientada a objetos Facultad: Ing. Mecánica, Aeronáutica, automotriz y Software Especialidad: Ingeniería de Software Integrantes: Avila Herrera Melissa Pariona Felices Roberto Sánchez Reyes Susana 2010

Módulos principales de Spring Spring Core (Inversión del control (IoC) / Inyección de dependencias (DI)) Spring AOP (Programación orientada a aspectos) Spring JDBC (Acceso a datos) Spring MVC (desarrollo Web según el patrón MVC) Spring Remoting (distribución) Spring Transaction Abstraction (Gestión de transacciones) •Otros: Spring TestContext (pruebas), Spring JMX (gestión), Spring Security (seguridad), Spring Web Flow (control de flujos en aplicaciones Web)

Spring JDBC (Acceso a datos) El módulo de JDBC Este módulo contiene varias características muy útiles, pero la más poderosa es el JdbcTemplate.

Ejemplo clásico Tomemos como ejemplo el ya clásico ciclo para leer datos de una tabla: Obtener un DataSource de algún lugar, ya sea por JNDI en un contenedor, o bien creándolo por código en aplicaciones independientes. Obtener una conexión a la base de datos, por medio del DataSource. Crear un PreparedStatement con el query a realizar. JNDI La Interfaz de Nombrado y Directorio Java (Java Naming and Directory Interface) es una Interfaz de Programación de Aplicaciones (API) para servicios de directorio. Esto permite a los clientes descubrir y buscar objetos y nombres a través de un nombre y, como todas las APIs de Java que hacen de interfaz con sistemas host, es independiente de la implementación subyacente. Adicionalmente, especifica una interfaz de proveedor de servicio (SPI) que permite que las implementaciones del servicio de directorio sean integradas en el framework. Las implementaciones pueden hacer uso de un servidor, un fichero, o una base de datos; la elección depende del vendedor.

Ejemplo clásico Si el query trae parámetros, configurarlos uno por uno. Ejecutar el query para obtener un ResultSet. Recorrer el ResultSet, haciendo algo con los objetos; un ejemplo simple es crear una instancia de alguna clase de Value Object y ponerle los valores que vienen en la tupla actual, y luego poner ese Value Object en una lista. Cerrar el ResultSet. Cerrar el PreparedStatement. Cerrar la conexión. Ejemplo

Conclusión Todo lo anterior tiene que estar dentro de uno o varios try-catch por si ocurre alguna excepción, cerrar los objetos que tengamos. Es algo muy tedioso de programar, sobre todo cuando se quiere obtener una lista corta de objetos que se van a presentar en alguna página web o en una interfaz y dichos objetos pueden ser simples mapas con los nombres de las columnas como llaves. Un mapa es una estructura de Java que nos permite almacenar pares clave/valor. De tal manera que para una clave solamente tenemos un valor. Spring se encarga de todos aquellos detalles engorrosos de bajo nivel que pueden provocar que la API de JDBC sea muy tediosa.

Spring-Jdbc Jerarquía de paquetes El framework de abstracción JDBC de Spring consiste en cuatro diferentes paquetes core, dataSource, object y support. El paquete org.springframework.jdbc.core contiene la clase JdbcTemplate y varias interfaces para callback, http://www.springhispano.org/?q=node/65 El paquete org.springframework.datasource contiene clases de utilería para acceso fácil a los DataSource, y varias implementaciones de DataSource que pueden ser utilizadas para pruebas o para correr código JDBC sin modificar fuera de un contenedor J2EE

Spring-Jdbc Jerarquía de paquetes El paquete org.springframework.jdbc.object contiene clases que representan las consultas (queries) a los RDBMS, las actualizaciones (updates) y los procedimientos almacenados (stored procedures) en objetos reusables . Y por último, el paquete org.springframework.jdbc.support es donde se encuentra la traducción de excepciones SQLException así como algunas clases de utilería. Las excepciones arrojadas durante el procesamiento de JDBC son traducidas a excepciones definidas en el paquete org.springframework.dao.

Spring-Jdbc Usando las clases principales de JDBC para controlar el procesamiento de JDBC y el manejo de errores. JdbcTemplate: Se encarga de ejecutar las funciones comúnes de JDBC como la creación y ejecución de statements. Esta clase ejecuta los queries (consultas) SQL, las actualizaciones (updates) y las llamadas a procedimientos almacenados (stored procedures), realizando la iteración sobre ResultSets y extrayendo los parametros retornados. También captura las excepciones de  JDBC y las traduce en una jerarquía de excepciones más genérica e informativa definida en el paquete org.springframework.dao

Spring-Jdbc JdbcTemplate (Ejemplos) Consultar por un String Consultar y rellenar un simple objeto de dominio. String surname = (String) this.jdbcTemplate.queryForObject( "select surname from t_actor where id = ?", new Object[]{new Long(1212)}, String.class); Actor actor = (Actor) this.jdbcTemplate.queryForObject( "select first_name, surname from t_actor where id = ?", new Object[]{new Long(1212)}, new RowMapper() { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { Actor actor = new Actor(); actor.setFirstName(rs.getString("first_name")); actor.setSurname(rs.getString("surname")); return actor; } });

Spring-Jdbc NamedParameterJdbcTemplate: La clase NamedParameterJdbcTemplate añade soporte a los statements JDBC mediante parámetros nombrados (a diferencia de los statements JDBC que usan solo argumentos '?' para su sustitución). Ejem: public int countOfActorsByFirstName(String firstName) { String sql = "select count(0) from T_ACTOR where first_name = :first_name"; SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName); return namedParameterJdbcTemplate.queryForInt(sql, namedParameters); }

Spring-Jdbc SimpleJdbcTemplate: La clase SimpleJdbcTemplate es un envolvente de un JdbcTemplate clásico que toma ventaja de las características de Java 5 como son los argumentos variables. public Actor findActor(long id) { String sql = "select id, first_name, last_name from T_ACTOR where id = ?"; ParameterizedRowMapper<Actor> mapper = new ParameterizedRowMapper<Actor>() { public Actor mapRow(ResultSet rs, int rowNum) throws SQLException { Actor actor = new Actor(); actor.setId(rs.getLong("id")); actor.setFirstName(rs.getString("first_name")); actor.setLastName(rs.getString("last_name")); return actor; } }; return this.simpleJdbcTemplate.queryForObject(sql, mapper, id); }

Spring-Jdbc DataSource Para poder trabajar con datos de una base de datos, uno necesita obtener una conexión a la misma. La manera en que Spring hace esto es mediante un DataSource.  Un DataSource es parte de la especificación JDBC y puede verse como una fábrica de conexiones. Permite al contenedor o al framework ocultar el pool de conexiones y el manejo de transaciones del código de aplicación.

Spring-Jdbc DataSource La clase DriverManagerDataSource trabaja de la misma manera en que usualmente se obtiene una conexión JDBC. Se tiene que especificar el nombre calificado de la clase del driver JDBC que se va a utilizar para que el DriverManager la cargue. Posteriormente se provee una url de conexión que varía dependiendo de los drivers JDBC. Uno tiene que consultar la documentación del driver para encontrar el valor correcto a usar.  Finalmente uno provee el nombre de usuario y la contraseña usadas para conectarse a la base de datos. Ejemplo:

Spring-Jdbc DataSource public static void crearDataSource() { DriverManagerDataSource ds = new DriverManagerDataSource(); ds.setDriverClassName("oracle.jdbc.driver.OracleDriver"); ds.setUrl("jdbc:oracle:thin:@localhost:1521:XE"); ds.setUsername("demo02"); ds.setPassword("demo02"); template = new JdbcTemplate(ds); }

Spring-Jdbc SQLExceptionTranslator Es una interface para ser implementado por las clases, puede traducir entre SQLExceptions y las excepciones de Spring derivadas de org.springframework.org.dao.DataAccessException. Las implementaciones pueden ser genéricas (por ejemplo, mediante el uso de códigos de SQLState para JDBC) o propietarias (por ejemlo, usando códigos de error de Oracle) para mayor precisión.

Conclusión Aspectos a mejorar en el ejemplo: SQLException: excepción genérica Captura de excepciones para no hacer nada ¿Cómo lo mejora Spring? Mapeo de SQLException a excepciones específicas Subclases de org.springframework.dao.DataAccessException Uso de unchecked exceptions DataAccessException es una subclase de java.lang.RuntimeException Se pueden capturar si se desea, pero no es obligatorio Automatiza la gestión de conexiones Se declara una fuente de datos y Spring la gestiona No se accede directamente a las conexiones, sino que se utiliza un JdbcTemplate Usualmente un org.springframework.jdbc.core.JdbcTemplate

El Wiki http://spring-jdbc.wikispaces.com/

Bibliografía http://www.xmind.net/share/lshimokawa/spring-jdbc/ http://www.comunidadjava.org/?q=node/421 http://www.javadocexamples.com/java_source/org/springframework/prospring/ticket/db/SampleBatchTests.java.html http://chuwiki.chuidiang.org/index.php?title=Ejemplo_sencillo_con_SpringFramework_DAO

Spring-Jdbc Spring JDBC ofrece un objeto llamado JdbcTemplate (El equivalente Spring a la clase Connection ), el cual se configura con un DataSource Entonces el componente que necesita obtener estos datos (por ejemplo un DAO) puede simplemente tener una propiedad llamada jdbcTemplate, por ejemplo: Primero se obtiene el equivalente Spring a una conexión con base de datos. Aunque hay muchas formas de hacerlo, incluyendo ficheros de configuración, una forma más inmediata, directamente en código seria : Ejemplo

Ejemplo Una vez que se obtiene la conexión, con el método query() de JdbcTemplate podemos hacer la consulta. A este método: Le pasamos un String con la sentencia SQL de select. Le pasamos una clase RowMapper encargada de: instanciar una clase Persona, leer una fila del ResultSet resultante y devolver dicha clase Persona. Devuelve una Collection rellena de Persona.

Spring-Jdbc El JdbcTemplate tiene varios métodos para leer datos, por ejemplo para obtener un solo dato o un solo registro, así como para modificar (INSERT, UPDATE, DELETE). Lo que el JdbcTemplate hace es todo lo que se menciono antes: Abre una conexión, crea un PreparedStatement con el SQL y los parámetros que se le da, lee los datos y los pone en una lista, cierra todo y los devuelve.

Spring-Jdbc Además, cualquier excepción de SQL que ocurra la convierte a un DataAccessException (hay toda una jerarquía de clases) pero es de tipo RuntimeException, así que se puede incluso quitar el try-catch y dejar que quien invoque el método se encargue de lidiar con cualquier excepción. La clase RuntimeException representa las excepciones que ocurren dentro de la máquina virtual Java (durante el tiempo de ejecución). Los paquetes Java definen varias clases RuntimeException. Se pueden capturar estas excepciones al igual que las otras. Sin embargo, no se require que un método especifique que lanza excepciones en tiempo de ejecución. Además puedes crear sus propias subclases de untimeException.

Spring-Jdbc Los paquetes de Spring org.springframework.jdbc y org.springframework.core.simple Es donde vienen la mayoría de las clases que intervienen en esto, aunque como pueden ver, tienen que usar solamente una o dos, pero es importante conocer las excepciones que pueden arrojarse y esas vienen en org.springframework.dao.