Lala
Seminario: Acceso a bases de datos desde Java
1.Persistencia de clases 2.Serialización 3.Java Database Connection (JDBC) 4.Data Access Objects (DAO) 5.Object-Relational Mapping (ORM) 6.Java Persistence API (JPA)
Acceso a BD desde Java
Acceso a bases de datos
● ● ●
Necesario en la mayoría de aplicaciones no triviales Normalmente no se contempla en el diseñoinicial
La implementación directa es una aplicación que trabaja íntegramente en memoria
Acceso a BD desde Java
Acceso a BD desde Java
●
Implementación de la clase Item:
package ventasbd; public class Item { int cantidad; String descripcion; float importeUnidad; public Item(int cantidad, String descripcion, float importeUnidad) { this.cantidad = cantidad; this.descripcion =descripcion; this.importeUnidad = importeUnidad; } public float importe() { return cantidad * importeUnidad; } }
Acceso a BD desde Java
Acceso a BD desde Java
●
Implementación de la clase Venta:
public float calcularImporte() { Iterator i = items.iterator(); float suma = 0; while (i.hasNext()) { suma += i.next().importe(); } return suma; } public float calcularIVA() { return 0.18f *calcularImporte(); } public float calcularTotal() { return 1.18f * calcularImporte(); } }
package ventasbd; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; public class Venta { int num; Date fecha; ArrayList items; public Venta(int num) { this.num = num; fecha = new Date(); items = new ArrayList(); } public void anadirItem(Item i) { items.add(i); }
Acceso a BD desde JavaAcceso a BD desde Java
●
Implementación de la clase SistemaVentas
package ventasbd; import java.util.TreeMap; class ErrorCreacionVenta extends Exception {} public class SistemaVentas { TreeMap ventas; public SistemaVentas() { ventas = new TreeMap(); } public void nuevaVenta(Venta v) { ventas.put(v.num, v); } public Venta venta(int num) { return ventas.get(num); } }
Acceso a BD desdeJava
Acceso a BD desde Java
●
Implementación de la clase VentasBD:
package ventasbd; import import import import import java.sql.Connection; java.sql.DriverManager; java.sql.SQLException; java.sql.Statement; java.text.SimpleDateFormat;
public class VentasBD { public static void main(String[] args) { SistemaVentas sistemaVentas = new SistemaVentas(); Venta venta = new Venta(1);venta.anadirItem(new Item(4, "Barritas energéticas", 2.0f)); venta.anadirItem(new Item(1, "Aceite cadena", 8.0f)); venta.anadirItem(new Item(1, "Par de guantes", 15.0f)); System.out.println ("Factura " + Integer.toString(venta.num) + " importe: " + venta.calcularTotal()); sistemaVentas.nuevaVenta(venta); } }
Acceso a BD desde Java
Acceso a BD desde Java
Persistencia de clases
Normalmenteexistirán varias clases cuya información debe guardarse de manera persistente
●
Su información no debe perderse al cerrar la aplicación
●
Persistencia de clases
Acceso a BD desde Java
Solución mediante serialización
La serialización en un fichero es una solución sencilla para proporcionar persistencia pero tiene varios inconvenientes:
●
●
Puede que por su volumen no sea posiblemantener todos los objetos en memoria El tiempo de arranque de la aplicación puede ser largo Un fallo inesperado en la aplicación puede hacer perder información
●
●
Solución mediante serialización
Acceso a BD desde Java
Adaptación de las clases persistentes
Las clases persistentes deben cumplir en general varias condiciones:
● ●
Incluir un atributo que funcione como claveprimaria. Si no existe, se añade. Incluir observadores y modificadores para leer/escribir los atributos que van a ser guardados en la base de datos Muchas relaciones en memoria desaparecen y se sustituyen por relaciones entre tablas
●
●
Adaptación de las clases persistentes
Acceso a BD desde Java
Diagrama del ejemplo tras eliminar las relaciones y añadir observadores
●
Adaptación...
Regístrate para leer el documento completo.