Detalles del post: Persistencia de Objetos Java utilizando db4o

15.12.05

Permalink 03:31:56, by admin Email , 3443 palabras, 18865 views views  
Categorías: Documentación, Tutoriales

Persistencia de Objetos Java utilizando db4o

¿Qué más puede hacer S.O.D.A.?

SQL permite ordenar los resultados; S.O.D.A. también. Este ejemplo muestra cómo los objetos Player almacenados se pueden recuperar ordenándolos por battingAverage. (¡Ahora es bastante obvio quienes son los pitchers!)

Query q = db.query();
q.constrain(Player.class);
q.descend("battingAverage").orderAscending();
ObjectSet result = q.execute();

Salida:

7
Kazuhisa Ishii:0.127, 13
Kirk Rueter:0.131, 9
Marquis Grissom:0.279
Cesar Izturis:0.288
Shawn Green:0.299
Adrian Beltre:0.334
Barry Bonds:0.362

S.O.D.A. permite definir consultas más complejas utilizando código que
es bastante simple una vez que se evita la tentación de pensar de forma
'relacional'. Para configurar las restricciones sólo hay que navegar
por el gráfico de consulta para encontrar las clases o atributos a los
que se quieren poner condiciones. El gráfico de consulta está muy
relacionado con el modelo de objetos de dominio, que todos los
desarrolladores deberían entender. Por otro lado, para conseguir un
resultado similar con SQL se necesita tener en cuentra cómo se han
mapeado los objetos de dominio en las tablas relacionales.

Este ejemplo muestra cómo seleccionar condiciones a dos atributos de la clase Player para encontrar "jugadores con un promedio de bateo por encima de .130 que sean pitchers con más de 5 wins". De nuevo, definimos un nodo de consulta y lo restringimos a la clase Player. Descendemos el gráfico para encontrar un nodo que represente el atributo llamado “battingAverage” y lo restringimos a los mayores de 0.13. El resultado es un objeto Constraint. Para selecconar la siguiente restricción, descendemos para encontrar el nodo que representa el atributo "wins"; esto en sí mismo significa que la consulta sólo encontrará objetos Pitcher. Este nodo está restringido a ser mayor que 5, y esto se combina utilizando un "AND" lógico con el primer objeto Constraint.

Query q = db.query();
q.constrain(Player.class);
Constraint constr = q.descend("battingAverage").constrain(new Float(0.13f)).greater();
q.descend("wins").constrain(new Integer(5)).greater().and(constr);
result = q.execute();

Salida:

1
Kirk Rueter:0.131, 9
Giants

El último ejemplo muestra cómo combinar condiciones de atibutos de diferentes clases para encontrar "jugadores con promedio de bateo superior a .300 que estén en un equipo con menos de 92 wins". La forma más fácil de hacer esto es empezar con Player, y luego navegar a Team. Descendemos para encontrar el nodo "battingAverage" igual que antes y seleccionamos una Constraint. Luego descendemos para encontrar el atributo "team". Como este atributo es del tipo Team, el nodo representa la clase Team, podemos descender de nuevo al nodo que representa el atributo "won" del Team y configurar una restricción para él. Finalmente, combinamos esto con la primera Constraint.

Query q = db.query();
q.constrain(Player.class);
Constraint constr = q.descend("battingAverage").constrain(new Float(0.3f)).greater();
q.descend("team").descend("won").constrain(new Integer(92)).smaller().and(constr);
result = q.execute();

Salida:

1
Barry Bonds:0.362
Giants

Páginas: 1 2 3 4 5 6 7 8 9

MHProject v2.0

Blog referente al grupo de investigación y desarrollo (MHProject) realizado en la Universidad Pública de Navarra por más de 12 personas. El proyecto se basa en el desarrollo e investigación de aplicaciones y sistemas para Televisión Digital Interactiva desarroladas sobre Java y basadas en el estandard abierto MHP (Multimedia Home Platform).

Alejandro Fanjul Hola que tal soy Alejandro Fanjul, webmaster y fundador de MHProject, para cualquier consulta por favor dirigirse a: alex.fanjul@mhproject.org


Mi currículum vítae.(pdf)


Recomiéndanos en Twitter!!

Febrero 2016
Lun Mar Mie Jue Vie Sab Dom
<< <     
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29            

Añade el calendario de MHProject
a tu Google Calendar.

Buscar

MHPenlaces

PresentacionesDocumentaciónLinks (Enlaces)Desarrollo del ProyectoRecursos

Sindicar esta bitácora XML

What is RSS?

Who's Online?

  • Guest Users: 3

powered by
b2evolution

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.