1 / 23
a ObjectDB Introduccion
es ObjectDB? Que
es ObjectDB? I Que
ObjectDB es un manejador de bases de datos orientado a objetos. Provee de todos los servicios basicos para el manejo de bases de datos, pero usando la losof a orientada objetos para el almacenamiento. Los objetos pueden ser ntegramente almacenados y recuperados desde la base de datos. No se necesitan denir tablas o convertir los objetos en registros usando SQL o ORM (Oracle, DB2, SQL Server o MySQL).
2 / 23
a ObjectDB Introduccion
es ObjectDB? Que
es ObjectDB? II Que
Java Persistence API (JPA) Es un estandar para accesar a bases de datos (Oracle, DB2, SQL Server o MySQL) desde aplicaciones Java. JPA a diferencia de JDBC (Java Database Connectivity) permite tablas y representar datos de clases y objetos en lugar de solo registros. Object Relational Mapping (ORM) es el puente entre la de los datos en la base de datos relacional y la representacion de clases y objetos de aplicaciones Java. representacion ObjectDB tiene soporte integrado de JPA lo que permite que la capa intermedia de ORM sea eliminada.
3 / 23
a ObjectDB Introduccion
es ObjectDB? Que
4 / 23
a ObjectDB Introduccion
es ObjectDB? Que
es ObjectDB? IV Que
Una opcion es utilizar JPA como API primaria y cambiar a JDO como API secundaria para las aplicar las funcionalidades que soporta JDO. solo JPA tiene mayor soporte (tutoriales, libros, codigo ejemplo). JDO puede ser sugerido si en determinado momento se desea portabilidad a ambos tipos de bases de datos. soporta bases de datos relacionales y ObjectDB. JPA solo ObjectDB requiere Java 5 o superior y y se puede utilizar sobre cualquier plataforma que soporte Java Standard Edition (JSE).
5 / 23
a ObjectDB Introduccion
es ObjectDB? Que
es ObjectDB? V Que
Java Development Kit (JDK) o Java Runtime Environment (JRE) pueden ser utilizados. tambien de ObjectDB para .NET. Actualmente se construye una version pues simplica la forma de ObjectDB agiliza la programacion conectarse a la base de datos. La curva de aprendizaje sobre ObjectDB es mas corta. No necesita instalarse, pues puede ser utilizado de modo embebido.
6 / 23
de clases Denicion
de clases Denicion
Para denir una clase (utilizando JPA) se necesita denir una representar objetos en la base de entity class lo cual permitira datos. @Entity public class Nombre Clase { } El almacenamiento de un objeto en la base de datos NO almacena los metodos ni el codigo, sino solo el estado del objeto y en particular solo los datos de tipo persistente. Por defecto cualquier campo que no es declarado como estatico (static) o transitorio (transient) es persistente (persistent). ObjectDB soporta IDs impl citos por lo que no es necesario denir PK.
Sergio Luis Perez (UAM C UAJIMALPA) Curso de bases de datos avanzadas 7 / 23
mediante JPA a la base de datos requiere una La conexion interfaz EntityManager. Aquellas operations que modican la base de datos requieren una instancia de tipo EntityTransaction. de una unidad de persistencia en un JPA requiere la denicion archivo XML con el n de generar una EntityManagerFactory para pero con ObjectDB basta con proporcionar establecer la conexion, la ruta donde se encuentran almacenados los objetos: EntityManagerFactory emf = Persistence.createEntityManagerFactory(Nombre entidad.(odb o objectdb));
8 / 23
9 / 23
Almacenamiento de objetos
Almacenamiento de objetos I
Las operaciones que modican el contenido de la bases de datos activa. requieren una transaccion activa Mediante el metodo persist, asociado a una transaccion generada por una instancia de EntityManager, es posible realizar el almacenamiento de objetos persistentes. Empleado empleado = new Empleado(Sergio, Perez); em.getTransaction().begin(); em.persist(empleado); em.getTransaction().commit(); El nuevo objeto de la entidad Empleado es almacenado cuando la es autorizada (commit). transaccion
Sergio Luis Perez (UAM C UAJIMALPA) Curso de bases de datos avanzadas 10 / 23
Almacenamiento de objetos
Almacenamiento de objetos II
de tipo IllegalArgumentException es lanzada por Una excepcion persist si el argumento no es una instancia de una clase. Solamente instancias de clases pueden ser almacenadas en la base de datos de forma independiente. Objetos que poseen a su vez como campos a otro tipo de objetos pueden ser almacenados de modo embebido. persistentes solo Empleado empleado = new Empleado(Sergio, Perez); direccion = new Direccion(Gladiolas, Direccion Tultepec); empleado.establecerDireccion(direcci on); em.getTransaction().begin(); em.persist(empleado); em.getTransaction().commit();
Sergio Luis Perez (UAM C UAJIMALPA) Curso de bases de datos avanzadas 11 / 23
Almacenamiento de objetos
12 / 23
Almacenamiento de objetos
Almacenamiento de objetos IV
Almacenamiento de varios objetos (Completo) em.getTransaction().begin(); for (int i = 1; i <= n; i++) { Empleado empleado = new Empleado(nombre[i], apellido[i]); direccion = new Direccion(calle[i], Direccion colonia[i]); empleado.establecerDireccion(direcci on); em.persist(empleado); } em.getTransaction().commit();
13 / 23
Almacenamiento de objetos
Almacenamiento de objetos V
en Almacenamiento de varios objetos (En bloques -actualizacion memoria-) em.getTransaction().begin(); for (int i = 1; i <= n; i++) { Empleado empleado = new Empleado(nombre[i], apellido[i]); direccion = new Direccion(calle[i], Direccion colonia[i]); empleado.establecerDireccion(direcci on); em.persist(empleado); if((i %100) == 0){ em.ush(); em.clear(); } } em.getTransaction().commit();
Sergio Luis Perez (UAM C UAJIMALPA) Curso de bases de datos avanzadas 14 / 23
Almacenamiento de objetos
Almacenamiento de objetos VI
en base Almacenamiento de varios objetos (En bloques -actualizacion de datos-) em.getTransaction().begin(); for (int i = 1; i <= n; i++) { Empleado empleado = new Empleado(nombre[i], apellido[i]); direccion = new Direccion(calle[i], Direccion colonia[i]); empleado.establecerDireccion(direcci on); em.persist(empleado); if((i %100) == 0){ em.getTransaction().commit(); em.clear(); em.getTransaction().begin(); } } em.getTransaction().commit();
Sergio Luis Perez (UAM C UAJIMALPA) Curso de bases de datos avanzadas 15 / 23
El termino de tipos persistentes se reere a todos aquellos tipos de datos que pueden ser almacenados en una base de datos. ObjectDB puede almacenar todos los tipos persistentes de JPA:
Clases denidas por el usuario: clases de tipo entidad (Entity), superclases asociadas y clases de tipo embebido Embeddable. Tipos de datos simples de Java: tipos primitivos, wrappers, cadenas (string, fechas (Date), etc. Tipos de Colecciones (Collections), diccionarios (Maps) y arreglos (Arrays). Otros tipos: enumeradores (Enum) y tipos serializables denidos por el usuario o por el sistema.
16 / 23
17 / 23
Clases embebidas @Embeddable { public class Direccion String calle; String ciudad; String estado; String pa s; String cp; }
18 / 23
Tipos de datos simples de Java Tipos primitivos: boolean, byte, short, char, int, long, oat y double. Clases equivalentes wrapper que se encuentran en java.lang: Boolean, Byte, Short, Character, Integer, Long, Float y Double. java.math.BigInteger, java.math.BigDecimal. java.lang.String. java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp.
19 / 23
Tipos de fecha y hora @Entity public class FechaYHora { java.sql.Date fecha1; @Temporal(TemporalType.DATE) java.util.Date fecha2 @Temporal(TemporalType.DATE) java.util.Calendar fecha3; java.sql.Time hora1; @Temporal(TemporalType.TIME) java.util.Date hora2; @Temporal(TemporalType.TIME) java.util.Calendar hora3;
20 / 23
java.sql.Timestamp fechaYHora1; @Temporal(TemporalType.TIMESTAMP) java.util.Date fechaYHora2; @Temporal(TemporalType.TIMESTAMP) java.util.Calendar fechaYHora3 java.util.Date fechaYHora4; // no es JPA portable java.util.Calendar fechaYHora5; }// no es JPA portable
21 / 23
22 / 23
23 / 23