Acceso a datos con JDBC Desarrollo de Aplicaciones Empresariales 2014-1 Contenidos • Introducción a JDBC • Diseño de la capa de acceso a datos • Ejemplos 2 Introducción a JDBC • ¿Cómo podemos acceder a un SGBD desde nuestros programas? Petición Programa (C, Pascal, Java, …) Cliente SGBD Datos Servidor 3 Introducción a JDBC • Para acceder a un SGBD, utilizamos librerías que nos proporcionan funciones de alto nivel para: – Obtener conexiones al SGBD – Enviar peticiones y recibir su resultado Programa (C, Pascal, Java, …) Cliente Librería BD – Gestionar la interacción (ej. gestión de transacciones) Petición SGBD Datos Servidor 4 Introducción a JDBC • Java Database Connectivity (JDBC) – API estándar de Java que permite la ejecución de operaciones sobre bases de datos – La API (paquetes java.sql y javax.sql) contiene un conjunto de interfaces y clases abstractas que utilizamos en nuestros programas – Cada SGBD proporciona un driver, es decir, una librería que implementa esas interfaces y clases abstractas para ese SGBD en particular 5 Introducción a JDBC • Java Database Connectivity (JDBC) – Al trabajar con una API estándar, en teoría nos proporciona independencia del SGBD concreto que utilicemos – Aunque existen pequeñas diferencias en el SQL de cada SGBD que sí deberemos tener en cuenta 6 Driver Orcl. Programa Java java.sql Introducción a JDBC Petición Oracle Datos Servidor Cliente Driver PSQL Programa Java java.sql Cliente Petición PostgreSQL Datos Servidor 7 Contenidos • Introducción a JDBC • Diseño de la capa de acceso a datos • Ejemplos 8 Diseño de la capa de acceso a datos • Objetivos – (En el caso más simple) la capa de acceso a datos proporciona las operaciones de acceso a los datos persistentes en una BD – Debe ser posible modificar la implementación de esta capa sin que las capas superiores se vean afectadas – La forma de lograr el objetivo anterior depende de la tecnología que estemos utilizando • A lo largo de la asignatura veremos varias alternativas 9 Diseño de la capa de acceso a datos • Un ejemplo sencillo: trabajo nombre código nombre salario Empleado localidad código trabaja en Departamento 10 Diseño de la capa de acceso a datos • Tenemos dos entidades u objetos del dominio • Para “Empleados”: – – – – – Buscar un empleado a partir de su código Buscar todos los que trabajen en un departamento determinado Insertar un nuevo empleado Actualizar los datos de un empleado Eliminar un empleado • Para “Departamentos”: – – – – Buscar un departamento a partir de su código Insertar un nuevo departamento Actualizar los datos de un departamento Eliminar un departamento 11 Diseño de la capa de acceso a datos • Paquete: es.udc.fi.asi.model.employee INTERFAZ DEL PAQUETE IMPLEMENTACIÓN DEL PAQUETE 12 Diseño de la capa de acceso a datos • Paquete: es.udc.fi.asi.model.employee INTERFAZ DEL PAQUETE IMPLEMENTACIÓN DEL PAQUETE 13 Ejercicios 1. Crear y poblar la base de datos (Scripts en src/sql) – Opción –f de psql 2. Configurar el fichero pom.xml con los datos de conexión a la base de datos creada – Fijarse también en la gestión de dependencias 3. Configurar base de datos en fichero springmodule.xml 4. Ejecutar RunExamples.java 5. Estudiar el código en el paquete “employee” 14 Ejercicios 6. Incluir en RunExamples.java un método que liste todos los empleados del departamento 20 – Nota: requiere modificar EmployeeService.java 7. Complete la clase JdbcDepartmentDAO.java 8. Incluya métodos en RunExamples.java que prueben la funcionalidad implementada en el ejercicio anterior – Para ello se requiere crear DepartmentService.java (basándose en EmployeeService.java) 9. Estudie la nueva clase DepartmentService.java – ¿De qué se ocupa? – ¿Quién configura los DAOs y el gestor de transacciones? 15