Vous êtes sur la page 1sur 82

Digitally signed by Alejandro Fanjul DN: cn=Alejandro Fanjul, c=ES, o=MHProject, ou=Proyectando, email=fanjul.35858@unavarra.es 'Date: 2005.12.

21 21:46:21 +01'00

db4objects
BASE DE DATOS ORIENTADA A OBJETOS
v1.0

NDICE

MHProject

Bases de datos (Introduccin)

db4objects

db4o por dentro

Crditos Y Bibliografa

RDBMS Vs OODBMS

OODBMS

Introduccin

Caractersticas

La API

RDBMS El paradigma Relacional

Nativas Vs No-Nativas

Comparativas Estadsticas Grficos

Casos de Uso Ejemplos Casos de xito

Motor Instalacin Documentacin

Tratamiento De Objetos

Consultas

Objetos Estructurados Colecciones Arrays Herencia

Transacciones Tecnologa De Cliente/Servidor

QBE

NQ

SODA

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.2

BASES DE DATOS INTRODUCCIN

PERSISTENCIA DE DATOS

Persistencia

VUna de las tareas ms crticas en la programacin es salvar y recuperar datos VLa persistencia es el almacenamiento de los datos en memoria, para una posterior recuperacin de los mismos VEn sistemas orientados a objetos, existen varios mtodos para hacer los objetos persistentes. VLa eleccin del mtodo es de vital importancia.
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .4

SERIALIZACIN

DATABASES

ORDMBS

PERSISTENCIA DE OBJETOS

OODBMS

RDBMS

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.5

BASES DE DATOS INTRODUCCIN

RDBMS vs OODBMS

RDBMS vs OODBMS

V2 Tecnologas cara a cara


9Tecnologa Relacional
Orientada al uso de funciones Centrada en los datos

9Tecnologa de Objetos
Orientada a Objetos Centrada en servicios

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.7

RDBMS vs OODBMS

VTecnologa Relacional
9Los datos constituyen un ente propio y van completamente separados de las funciones que los manejan. 9De hecho uno puede existir perfectamente sin la existencia del otro. 9Esto crea una complejidad aadida a la hora de manejar esos datos.

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.8

RDBMS vs OODBMS

VTecnologa de Objetos
9Los datos coexisten junto a los procesos que los tratan. 9Estas entidades son los Objetos 9Simplifica el tratamiento de los datos.

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.9

BASES DE DATOS INTRODUCCIN

RDBMS EL PARADIGMA RELACIONAL

El Paradigma Relacional

VLos datos son independientes de las entidades que los procesan VDichos datos deben ser almacenados en bases de datos relacionales compuestas principalmente de Tablas, Filas (registros), y Campos. VDichos datos deben mantener una relacin coherente entre ellos (Relacin impuesta por la Base de datos).
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .11

El paradigma relacional

VQu pasa si queremos almacenar Objetos creados por un lenguaje orientado a Objetos en una base de datos Relacional? VEn este instante se produce lo que vamos a llamar la Inadaptacin de Impedancia (Entre Objetos y Datos Relacionales)

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.12

Esquema del Paradigma Relacional


CLASE PARADIGMA

OBJETO1

OBJETO2 OBJETO3

X X X
TABLA1

RDBMS
TABLA2

ENTORNO DE OBJETOS

ENTORNO DE DATOS

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.13

El paradigma relacional Solucin Adoptada

VQu pasa si queremos almacenar Objetos creados por un lenguaje orientado a Objetos en una base de datos Relacional? VLa solucin comunmente aceptada pasa por lo que llamaremos Mapeo Objeto - Relacional

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.14

Esquema del Paradigma Relacional (Solucin)


CLASE MAPEO RDBMS
TABLA1 TABLA2

REGISTRO1 OBJETO1 REGISTRO2 REGISTRO3 OBJETO3

OBJETO2

ENTORNO DE OBJETOS

<atributo> <columna>

ENTORNO DE DATOS

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.15

Esquema del Paradigma Relacional (Solucin)

VMapeo (Objeto Relacional)


9Nos permite mapear los objetos a registros en las tablas de base de datos. 9Esto se realiza mediante una hoja de mapeo en la que convertimos cada clase en una tabla, cada objeto en un registro (fila) de la base de datos y cada atributo en una columna de la misma. 9Tenemos que manejar las relaciones entre Clases (Tablas) mediante las tpicas claves principales, primarias y/o externas.
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .16

BASES DE DATOS INTRODUCCIN

OODBMS (Object oriented Data Base Manager System)

OODBMS

VNos permiten almacenar Objetos directamente (no hay registros ni tablas). VNos dan transparencia a la hora de almacenarlos. VNos ofrecen mayor flexibilidad ante los posibles cambios. a1 VLos datos coexisten con los objetos. a2 VVelocidad OODBMS RDBMS
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .18

OODBMS Standards
V The Object Oriented Database Manifesto (1989) V Mandatory features: V Complex objects (OO feature)
9 objects can contain attributes which are themselves objects.

V V V V V V V V V V V

Object identity (OO) Encapsulation (OO) Classes (OO) Inheritance (OO): class hierarchies Overriding, Overloading, Late Binding (OO) Computational completeness (OO Persistence (DB)
9 data must remain after the process that created it has terminated

Secondary Storage Management (DB) Concurrency (DB) Recovery (DB) Ad hoc query facility (DB)
9 not necessarily a query language could be a graphical query tool
E.T.S de Ingenieros de Telecomunicacin

19/12/2005

.19

OODBMS Standards
V The ODMG Proposed Standard V One of the crucial factors in the commercial success of RDBMSs is the relative standardisation of the data model V The Object Data Management Group (ODMG) was formed by a group of industry representatives to define a proposed standard for the object data model. V It is still far from being as widely recognised as the relational database standards. V The ODMG proposed standard defines the following aspects of an OODBMS:
9 9 9 9 9 9 9 9 9 basic terminology data types classes and inheritance objects collection objects (including sets, bags, lists, arrays) structured objects (Date, Interval, Time, Timestamp similar to SQL) relationships object definition language (ODL) object query language (OQL)
E.T.S de Ingenieros de Telecomunicacin

19/12/2005

.20

OODBMS Ventajas

VObjetos y Relaciones Complej@s VJerarqua de clases VSin desadaptacin de impedancia VSin necesidad de claves primarias VUn Modelo de datos VUn Lenguaje de programacin VSin necesidad de lenguaje de Conslutas VAlto rendimiento en ciertas tareas
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .21

OODBMS Desventajas

VCambios de esquemas VFalta de consenso en standards VFalta de ad-hoc querying a7


9En General RDMBS es ms adecuando para bases de datos con variedad de consultas y requerimientos de interface de usuario (ej. sistema de gestin de business). Mientras que OODBMS es ms propio de aplicaciones con complejos y/o irregulares datos donde se siguen patrones previsibles (ej. CAD/CAM)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .22

OODBMS Java Data Objects (JDO)

VAplicaciones escritas para uso de JDO pueden tratar con cualquier Base de datos que implemente JDO VLas consultas (queries) estn escritas en un lenguaje parecido-a-Java (JDOQL) VEl mapeo de objetos a la base de datos estn definidos en descriptores XML VAlgunos proovedores de OODBMS basan sus productos en JDO (Lo hace db4o?)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .23

OODBMS Nativas vs. No-Nativas V OODBMS No-Nativas


9 La interface nos permite un tratamiento transparente de los objetos como tales. 9 La base de datos se encarga de transformar esos objetos por nosotros.

V OODBMS Nativas
9 La interface permite el tratamiento nativo de los objetos como tales. 9 La base de datos almacena esos objetos como tales.

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.24

db4OBJECTS
www.db4o.com

INTRODUCCIN

Db4o: Introduccin

VBase de datos orientada a objetos completamente nativa de alto rendimiento. VDesarrollada en el corazn de Sillicon Valley. VCompacta y vlida como Base de datos embedida en la aplicacin. VSoporta aplicaciones Standalone as como Cliente/Servidor (Aplicaciones distribuidas). VDisponible para entornos Java o .Net
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .26

Db4o: Caractersticas

VMnimo consumo de recursos


9Pequea FootPrint (Huella)

VAlto rendimiento VFcil Implementacin (Mnimo cdigo) VPortabilidad


9Corre sobre Java 1.x hasta 5.0, en .Net sobre J2EE, J2SE, J2ME:CDC, Symbian

VConfiabilidad (ACID) VTransparencia


19/12/2005 E.T.S de Ingenieros de Telecomunicacin .27

Db4o: Caractersticas II

VVelocidad: hasta 44 veces ms rpido que Hibernate/MySQL VSoporte al cambio de Versiones VAdministracin Nula VSoporte a JSP / Servlets VCdigo Abierto (Bajo 2 licencias)
a4
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .28

Db4o: Caractersticas III

VCon db4o eliminamos el proceso de diseo, implementacin y mantenimiento de la base de datos pues:
9El modelo de clases es el esquema de base de datos.

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.29

Db4o: Caractersticas III


V Db4o nos permite:
9 Embeder la base de datos (applicaciones Standalone) 9 Conexin parcial Cliente a Servidor 9 Conexin distribuida entre servidores (Sincronizacin de datos)

db4o

Embedido (400kb) Standalone

Parcial Client to Server

Distribuido Server to Server

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.30

Db4o: Caractersticas IIII


V Db4o nos ofrece 3 tipos de consultas:
9 Query by Example (QBE): Consultas por ejemplo o prototipo 9 Simple Object Database Access (SODA): Consultas dinmicas basadas en nodos 9 Native Queries (NQ): Consultas a datos con lenguaje nativo
Con todo lo que supone esto (TypeSafe, No-Strings, No Learn)
Db4o.queries

QBE Query By Example

SODA

NQ Native Queries
a9

Exportamos a XML (Xstream)


19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.31

Db4o: Comparativas, Estadsticas y Grficos


Velocidad de escritura, lectura, consulta y borrado.

Estadsticas realizadas con PolePosition.


19/12/2005 E.T.S de Ingenieros de Telecomunicacin .32

Db4o: Comparativas, Estadsticas y Grficos


Otros Bancos de Pruebas.

Estadsticas realizadas con PolePosition.


19/12/2005 E.T.S de Ingenieros de Telecomunicacin .33

Db4o: Casos de Uso V Podemos utilizar db4objects para: 9Dispositivos mviles


(Mviles,Pdas,Tablet Pcs)

9Dispositivos mdicos y biotecnologa 9Industria del transporte 9Software enlatado 9Aplicaciones Web (JSP / Servlets) 9Sistemas en tiempo real
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .34

Db4o: Casos de Uso II

VPodemos utilizar db4objects para: 9Instituciones educativas y de enseanza en Colegios y/o Universidades.
(Conseguimos con ello centrarnos en el lenguaje Java o .Net sin distraernos en la BD)

9Juegos Standalone y Online

9Televsin Interactiva? (MHP) ?


19/12/2005 E.T.S de Ingenieros de Telecomunicacin .35

Db4o: Ejemplos de Clientes Novell BMW Car IT Indra Systems Massie Labas Bosch TMT Eastern Data Electrabel Web Radiance Hertz

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.36

Db4objects POR DENTRO

MOTOR INSTALACION DOCUMENTACION

Db4o por dentro Motor, Instalacin, Documentacin

VEl motor de la base de datos consiste tan solo en un pequeo archivo .jar de menos de 400kb. VLa instalacin supone agregar el motor de la base de datos (db4o-.jar) a nuestro CLASSPATH. VLa documentacin de la base de datos est creada mediante JavaDoc y viene incluida en el mismo paquete.
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .38

Db4o POR DENTRO

La API

Db4o Por dentro: La API V En principio solo los paquetes com.db4o y com.db4o.query son necesarios para un correcto funcionamiento.
Mtodos estticos nos permiten: - Abrir y Cerrar db. - Conectarnos a servidor. - Configurar la db.

com.db4o

La interface + importante: - Es nuestra propia dB ya sean en single o client mode.

com.db4o. Db4o

com.db4o. ObjectContainer

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.40

Db4o Por dentro: La API V com.db4o.ObjectContainer.


9 Puede ser una dB tanto en single-mode como en client to server connection. 9 Todos los ObjectContainer manejan una transaccin. Todo trabajo es transaccional. 9 Cada ObjectContainer mantiene sus propias referencias a objetos almacenados e instanciados. 9 Un ObjectContainer esta diseado para permanecer abierto mientras se trabaja con ellos, cuando cerramos una dB todas las referencias a objetos desaparecen de la memoria RAM.
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .41

Db4o Por dentro: La API V com.db4o.ext nos extiende y proporciona las funciones avanzadas de com.db4o. (2 pasos)
Razones: -Es ms fcil y rpido empezar a utilizar la db. -Ser ms fcil para otros productos copiar la interface bsica de la db. -Es un sencillo ejemplo de cmo de ligera puede llegar a ser nuestra dB.

com.db4o

com.db4o.ext

com.db4o.config

com.db4o.query

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.42

Db4o Por dentro: La API V com.db4o.config nos permite configurar y/o tunear la base de datos a nuestro gusto
-Paquete que contiene tipos y clases que nos permiten configurar y/o tunear la base de datos a nuestro gusto. -La configuracin de la base de datos se hace por norma general antes de abrir la sesin en la misma. com.db4o.query

com.db4o

com.db4o.ext

com.db4o.config

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.43

Db4o Por dentro: La API V com.db4o.query nos ofrece el interface de consultas mediante 3 tipos de consultas
-Paquete que alberga la clase predicado para realizar consultas mediante Native Query (NQ). -NQ permite mejor y ms rpida implementacin pero reduce el rendimiento de consultas. com.db4o.query

com.db4o

com.db4o.ext

com.db4o.config

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.44

Db4o POR DENTRO

TRATAMIENTO DE OBJETOS

dbo4: Tratamiento de Objetos

VAbrir y cerrar la base de datos


9Simplemente llamamos a .openFile( ) 9Cerramos con una llamada a .close()
ObjectContainer db = Db4o.openFile(Archivo.yap); try { // hacer algo con la db finally { db.close(); } // cerrar la base de datos antes de salir Representa la base de datos

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.46

dbo4: Tratamiento de Objetos

VAlmacenar objetos
9Simplemente llamamos a .set( ) pasando cualquier objeto como parmetro
Pilot pilot1 = new Pilot("Michael Schumacher",100); db.set(pilot1); Almacenamos el objeto con un simple set

System.out.println("Stored "+pilot1);

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.47

dbo4: Tratamiento de Objetos

VRecuperar objetos
9Lo intentamos con la sencilla interface QBE
Pilot proto = new Pilot(null,0); ObjectSet result=db.get(proto); listResult(result); Consultamos con .get() Listamos resultados Listamos todos ! Creamos un objeto prototipo con new() (con nulls y 0s)

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.48

dbo4: Tratamiento de Objetos

VRecuperar objetos con QBE


9Lo intentamos con la sencilla interface QBE
Pilot proto = new Pilot(Michael Sumacher,0); ObjectSet result=db.get(proto); listResult(result); Consultamos con .get() Listamos resultados Listamos por nombre Creamos un objeto prototipo con new()

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.49

dbo4: Tratamiento de Objetos

VActualizar objetos
9Lo intentamos con la sencilla interface QBE
ObjectSet result=db.get(new Pilot("Michael",0)); Pilot found=(Pilot)result.next(); Recuperamos un objeto de la db

found.addPoints(11); db.set(found); retrieveAllPilots(db);

Lo tratamos (Actualizamos) Lo almacenamos En la misma sesin


E.T.S de Ingenieros de Telecomunicacin .50

19/12/2005

dbo4: Tratamiento de Objetos

VBorrar objetos
9Simplemente llamamos a .delete( ) pasando cualquier objeto como parmetro
ObjectSet result=db.get(new Pilot("Michael Schumacher",0)); Pilot found=(Pilot)result.next(); db.delete(found); retrieveAllPilots(db);

Borramos el objeto conocido

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.51

Db4o POR DENTRO

CONSULTAS DE OBJETOS

dbo4: Consulta de Objetos

V Quering by Example (QBE) Qu?


9 Son consultas extremadamente fciles y rpidas 9 Tenemos limitaciones en las consultas
No podemos ejecutar consultas con expresiones avanzadas como (AND, OR, NOT, etc.)

9 No se pueden imponer valores 0 o null. 9 Necesitas un constructor para los objetos

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.53

dbo4: Consulta de Objetos

V Quering by Example (QBE) Cmo?


1. Creamos un objeto prototipo (Mediante atributos por defecto nulls y 0s) 2. Utilizamos el mtodo .get( ) pasndole el objeto prototipo. 3. Nos devuelve un ObjectSet que contiene los objetos de la consulta realizada
Pilot proto=new Pilot(null",0); ObjectSet result=db.get(proto); listResult(result);

Consultamos con .get()


.54

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

dbo4: Consulta de Objetos

VQuering by Example (QBE) (Ejemplo 2)


9Hacemos una consulta por nombre
Pilot proto = new Pilot(Michael Sumacher,0); ObjectSet result=db.get(proto); listResult(result); Consultamos con .get() Listamos resultados Listamos por nombre Creamos un objeto prototipo con new()

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.55

dbo4: Consulta de Objetos

V Native Queries (NQ) Qu?


9 Son consultas realizadas con el mismo lenguaje de programacin. 9 Por tanto son consultas de EscrituraSegura, comprobadas en Tiempo de Compilacin, y 100 % Factorizables 9 Podemos incluso llamar a mtodos dentro de las propias consultas. 9 Estn perfectamente standarizadas y son una va de futuro seguro
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .56

dbo4: Consulta de Objetos

V Native Queries (NQ) Cmo?


1. Creamos un predicado (o expresin) con lenguaje de cdigo nativo. [ new predicate() ] 2. Implementamos el mtodo #match() perteneciente a la clase predicate() 3. Devuelve true para marcar especficas instancias como parte del conjunto resultado 4. Utilizamos el mtodo .query( ) pasndole esa expresin de consulta.
E.T.S de Ingenieros de Telecomunicacin

19/12/2005

.57

dbo4: Consulta de Objetos

VNative Queries (NQ) (Ejemplo )


9Hacemos una consulta por puntos == 100
Creamos una expresin en leguaje nativo con nuevo Predicate() Implementamos el mtodo .match() que hace la comparacin y devuelve true Consultamos esa expresin mediante .query()
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .58

List pilots = db.query(new Predicate( ) { public boolean match(Pilot pilot) { return pilot.getPoints() == 100; } });

dbo4: Consulta de Objetos V Native Queries (NQ) (Ejemplo 2 )


9 Hacemos una consulta por puntos > 99 (AND) <199
List pilots = db.query( new Predicate() { public boolean match(Pilot pilot) { return pilot.getPoints() > 99 && pilot.getPoints() < 199 || pilot.getName().equals("Rubens Barrichello"); } }); Creamos una expresin en leguaje nativo con nuevo Predicate() Implementamos el mtodo .match() que hace la comparacin y devuelve true Consultamos esa expresin mediante .query()
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .59

dbo4: Consulta de Objetos

V S.O.D.A Query API Qu?


9 Son consultas de nodo dinmicas de bajo nivel que permiten directamente recorrer la jerarqua de clases. 9 Al contrario que NQ, SODA utiliza Strings para identificar los campos 9 Por lo tanto no tiene las caractersticas de Escritura-Segura, comprobadas en Tiempo de Compilacin, y 100 % Factorizables 9 Sin embargo es ms rpido que NQ 9 Al contrario que QBE permite consultas a 0.
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .60

dbo4: Consulta de Objetos

V S.O.D.A Query API Cmo?


1. Creamo un nuevo objeto (nodo) a travs del metodo .query() del ObjectContainer 2. Descendemos por rbol jerrquico de clases 3. Imponemos alguna o varias condiciones con .constrain(), (a uno o varios atributos) 4. Ejecutamos esa consulta con .execute() y nos devuelve un ObjectSet con los objetos consultados.
E.T.S de Ingenieros de Telecomunicacin

19/12/2005

.61

dbo4: Consulta de Objetos

VS.O.D.A Query API (Ejemplo )


9Hacemos una consulta por todos los pilotos
Class: Pilot Creamos nuevo nodo de consulta con .query() Imponemos ese nodo a Toda la clase pilot con .constrain() sobre Pilot.class Ejecutamos la consulta mediante .execute()
.62

Query query = db.query(); query.constrain(Pilot.class); ObjectSet result = query.execute(); listResult(result);


19/12/2005 E.T.S de Ingenieros de Telecomunicacin

dbo4: Consulta de Objetos

VS.O.D.A Query API (Ejemplo 2 )


9Hacemos una consulta por nombre de piloto
Class: Pilot name Equals(MS) Creamos nuevo nodo de consulta con .query() Imponemos ese nodo a Toda la clase pilot Descendemos por el nodo a name e imponemos MS con .constrain() Ejecutamos la consulta mediante .execute()
.63

Query query=db.query(); query.constrain(Pilot.class); query.descend("name").constrain("MS"); ObjectSet result=query.execute();


19/12/2005 E.T.S de Ingenieros de Telecomunicacin

dbo4: Consulta de Objetos

VS.O.D.A Query API (Ejemplo 2 )


9Hacemos una consulta por nombre y puntos
Class: Pilot name Equals(MS)
points

Creamos nuevo nodo de consulta con .query() Imponemos ese nodo a Toda la clase pilot Descendemos por el nodo a name e imponemos MS con .constrain() Descendemos a points e imponemos >60
.64

Greater( 60 )

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

Db4o POR DENTRO

Objetos Estructurados Colecciones y Arrays Herencia

dbo4: Objetos Estructurados

VNo tenemos por qu almacenar todos los objetos subordinados si no slo el objeto de mayor nivel. team

car

Db4o database
pilot

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.66

dbo4: Objetos Estructurados

VConsultas estructuradas
9Consultar un piloto por su modelo de coche
Class: Car
el mod

pilo

Equals (Ferrari) Query carquery=db.query(); carquery.constrain(Car.class); carquery.descend("model").constrain("Ferrari"); Query pilotquery=carquery.descend("pilot"); ObjectSet result=pilotquery.execute();
19/12/2005 E.T.S de Ingenieros de Telecomunicacin

Creamos nuevo nodo de consulta con .query() Descendemos por model imponemos Ferrari Descendemos por pilot.
.67

dbo4: Objetos Estructurados

VActualizacin de profundidad
9Si queremos actualizar un objeto subordinado salvando (almacenando) su objeto superior en la dB debemos configurar la db para actualizacin de profundida con .cascadeOnUpdate() antes de abrir la db. 9Por defecto la profundidad es 1 lo cual permite actualizar atributos primitivos o Strings.

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.68

dbo4: Objetos Estructurados

VBorrado recursivo
9De forma anloga a la actualizacin el borrado recursivo debe ser configurado mediante .cascadeOnDelete() antes de la apertura de la dB. 9Con esto conseguimos borrar los objetos subordinados borrando nicamente el objeto de mayor nivel. 9Pero que pasa si un objeto subordinado est referenciado por otro objeto? Cuidado!!!
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .69

dbo4: Objetos Estructurados


V Sin .cascadeOnDelete()
Borramos

V Con .cascadeOnDelete()
Borramos

X X

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.70

db4o: Colecciones y Arrays

VPodemos consultar arrays y almacenarlos de la misma forma que datos primitivos.


9Mediante QBE el orden de los valores consultados es irrelevante 9Con NQ simplemente consultamos como si hiciramos bsquedas nativas en arrays.

VNada nuevo en consulta y borrado de arrays, simplemente tener en cuenta la profundidad.


19/12/2005 E.T.S de Ingenieros de Telecomunicacin .71

db4o: Herencia V Db4o nos devuelve los objetos del tipo consultado es decir:
9 Consultando una SuperClase nos devuelve todos los objetos padre e hijos. 9 Consultando una SubClase nos devuelve los objetos de esa SubClase.
Consulta Figuras

Consulta

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.72

db4o: Herencia

VQu pasa con QBE si la clase a consultar es Abstracta o Interface?


9No podemos utilizar un constructor para hacer el objeto prototipo. 9Solucin: Utilizamos MiClase.class lo que nos devuelve la clase entera.

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.73

Db4o POR DENTRO

TRANSACCIONES TECNOLOGA CLIENTE/SERVIDOR

db4o: Transacciones Simples

Vdb4o nos ofrece dos mtodos para realizar transacciones


9.commit() Finaliza una transaccin 9.rollback() Deshace una transaccin

VLa transaccin es implcitamente cerrada por defecto cuando cerramos una db. VSin embargo debemos tener cuidado a la hora de hacer .rollback() con Live Objects.
9Se deben refrescar con .ext().refresh(obj,depth)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .75

db4o: Transacciones Simples

VProceso commit rollback (Client/Server)


Pedi mos Coch e

Set (

RollB ack

()

Refre sh()

Db4o database

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.76

db4o: Cliente / Servidor Local

VDe cara a la API no existen diferencias reales entre ejecutar transacciones concurrentes dentro de la misma VM y transacciones ejecutadas contra un server
9Para abrir una db en modo servidor dentro de la misma VM utilizamos .openServer(dbfile.yap,0) con puerto 0. 9Para acceder a esa base de datos en modo cliente Local tan solo usamos .openClient()
E.T.S de Ingenieros de Telecomunicacin

19/12/2005

.77

db4o: Cliente / Servidor Local

VCada contenedor cliente mantiene su propio cache de referencias dbiles de los objetos ya conocidos. VPara hacer que los cambios hechos por un cliente sean cometidos por todos los clientes inmediatamente debemos refrescar los objetos conocidos explcitamente con .ext().refresh(obj, depth)

19/12/2005

E.T.S de Ingenieros de Telecomunicacin

.78

db4o: Cliente / Servidor Remoto

VDesde aqu hay un pequeo paso ya para configurar nuestra db como Client/Server sobre TCP/IP.
9Tan solo especificamos un puerto de servidor mayor que 0 y abrimos los clientes garantizandoles acceso con USER Y PASS. 9Abrimos con .openServer(db.yap,PORT) 9Garantizamos con .grantAccess(USER,PASS) 9Conectamos con .openClient(Server",PORT,USER,PASS)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .79

db4o: Cliente / Servidor Remoto

VAlgunas veces necesitamos enviar ciertos mensajes tipo kill al servidor entonces:
9El servidor se pone como receptor de mensajes con .setMessageRecipient() pasndole como parmetro el mensaje obj. 9El mensaje es recivido y procesado por el mtodo processMessage() 9El cliente se pone como Mensajero con .getMessageSender() y manda un mensaje con .send() . Ejemplo msg: new StopServer()
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .80

db4o: Conclusin

VHemos visto como db4o nos permite hacer un sin fin de cosas con muy poco cdigo y esfuerzo y eso que tan solo hemos visto una parte de db4o. An nos quedara por mirar temas como:
Evaluaciones SODA Constructores Intrpretes Configuracin y Tuneado Indexacin Object Manager
19/12/2005

ClassLoaders ServLets Encriptacin Refactorizado de clases Optimizacin de consultas E.T.S de Ingenieros de Telecomunicacin Replicaciones

.81

db4o Base de datos Orientada a Objetos


[---------- Proyecto ----------]

MHProject v1.0 www.mhproject.org

Crditos y Bibliografa

E.T.S de Ingenieros de Telecomunicacin Universidad Pblica de Navarra [---------- Autor ----------]

Alejandro Fanjul
fanjul.35858@e.unavarra.es afanjul@mhproject.org

[---------- Tutores ----------]

Mikel Sagues
mikel.sagues@unavarra.es

Javier Navallas
javier.navallas@unavarra.es

[---------- Bibliografa ----------] Db4o.com: Tutorial and Presentations Bell College: Presentations [Object Persistence]
E.T.S de Ingenieros de Telecomunicacin .82

19/12/2005

Vous aimerez peut-être aussi