PDF de programación - Esquema de Persistencia en Lenguajes orientados a objetos

Imágen de pdf Esquema de Persistencia en Lenguajes orientados a objetos

Esquema de Persistencia en Lenguajes orientados a objetosgráfica de visualizaciones

Publicado el 15 de Abril del 2021
398 visualizaciones desde el 15 de Abril del 2021
138,8 KB
6 paginas
Creado hace 15a (05/09/2008)
ESQUEMAS DE PERSISTENCIA EN LENGUAJES ORIENTADOS A OBJETOS

Martín Pablo Caballero

Tutores: Gabriel Bruno y Parruccia Luciano



Alumno becarío de investigación y servicio, de la carrera de Ingeniería en Sistemas de
Información, Facultad Regional Villa María de la Universidad Tecnológica Nacional.
Av. Universidad 450, Villa María, X5900GLB, Cba. [email protected]

Introducción

El objetivo de este proyecto es demostrar las diferentes alternativas a la hora
de elegir esquemas de persistencias para nuestros sistemas orientados a objetos. En
este estudio se tendrá en cuenta cómo interactúa desde un lenguaje orientado a
objetos con un modelo relacional o un repositorio de objetos de la manera más
transparente posible.

Metodología



Para este estudio se creará una aplicación orientada a objetos (Agenda), y que
la misma sea persistente, es decir que se puedan convertir en persistentes todos los
objetos que la aplicación necesite almacenar. Para ello se verán dos alternativas:

1.
2.

el mapeo de clases a través de Hibernate
el uso de un repositorio de objetos como DB4O (Database for

objects).

En cuanto a la programación se utilizarán dos lenguajes orientados a objetos:

Java y C#.NET.


Para realizar la persistencia de objetos a través de Hibernate se requiere
forzosamente el uso de una base de datos relacional. Por ende y, debido a la gran
variedad de SGBDR (Sistemas generadores de bases de datos relacionales), se hizo
un exhaustivo estudio entre las mismas para comparar rendimiento y funcionalidad.


Luego, se tomó el tiempo que llevó realizar la persistencia de los objetos con
este sistema y se comparó con el tiempo requerido usando DB4O. Se hizo una
inserción y recuperación masiva de objetos midiendo la eficiencia de cada sistema.


Para ambos casos no sólo se tomó en cuenta el rendimiento sino también en el
costo de desarrollo y sus respectivas funcionalidades. Se analizaron variables como la
dificultad en el uso, la automatización de tareas, la cantidad de código que se inserta
en el sistema en la capa de persistencia. Esto indica con qué facilidad se realiza la
materialización y desmaterialización de nuestros objetos al medio de persistencia.


Para todo esto se crearon cuatro aplicaciones: dos en Java y dos en C#.NET.

Tanto las de Java como las de C#.NET usaron ambos sistemas de persistencia.


La elección de estos dos lenguajes de desarrollo para llevar a cabo este trabajo
fue tomada para saber de qué manera éstos llevaban a cabo las distintas formas de
persistencia. Es decir cómo se utilizan Hibernate y DB4O en estos lenguajes que
consideramos, hoy por hoy, los dominantes del mundo de la programación.

Bases de datos relacionales utilizadas:
DB2
Postgres
SQLServer


Oracle
MySQL

El estudio realizado sobre éstas fue la realización de consultas de: inserción,
selección, actualización y eliminación de: 50.000, 500.000 y 1.000.000 de registros con
su correspondiente medición de tiempo.
Las herramientas pagas (DB2, SQLServer y Oracle) se han utilizado con versiones
gratuitas limitadas en funcionalidades (versiones express).


Tabla 1 - Medición de tiempo a las consultas realizadas a los motores de bases de datos

relacionales



Referencias de los gráficos

400000

300000

200000

100000

0

Insert

Gráfico 1 – comparación de tiempos
de consultas Insert entre las DBs
(Databases)

25000

20000

15000

10000

5000

0

Select

Gráfico 2 – comparación de tiempos
de consultas Select entre las DBs

12000

10000

8000

6000

4000

2000

0

20000

15000

10000

5000

0

Updat e

Delet e

Gráfico 3 – comparación de tiempos
de consultas Update entre las DBs

Gráfico 4 – comparación de tiempos
de consultas Delete entre las DBs

La base de datos relacional escogida para utilizar con Hibernate ha sido SQLServer
debido a sus buenos rendimientos con respecto a las demás y su fácil utilización (Ver
gráficos 1, 2, 3 y 4).

Para comprobar los tiempos se utilizó una agenda donde se persisten los contactos,
tareas y préstamos con sus respectivas asociaciones entre ellas y otras clases menos
importantes (ver gráfico 5).



Gráfico 5 – Diagrama de clases de una agenda simple utilizada para el estudio

0,000

20.000

5000,000

Hibernate
Db4ODB4O

20000,000

15000,000

10000,000

Gráfico 6 – Comparación de los tiempos de Hibernate y DB4O al
persistir 20.000 objetos.


Los resultados de comparar los tiempos entre Hibernate y DB4O han sido los
siguientes:



El resultado de persistir objetos es:

Gráfico 7 – Comparación de los tiempos de Hibernate y DB4O al
persistir 200.000 objetos.

Hibernate
Db4ODB4O

200.000

200000,000

150000,000

100000,000

50000,000

0,000


Con 20.000 objetos es 3,122754 veces más rápido DB4O (Ver gráfico 6).
Con 100.000 registros es 2,381433 veces más rápido DB4O (Ver gráfico 7).


DB40 [1]

Ventajas:

• Se apoyan en construcciones propias del lenguaje (ya sean de JAVA o .NET).
• Su aprendizaje es muy intuitivo y simple.
• Fácil de utilizar.
• No es necesario ningún tipo de mapeo para persistir los objetos.
• El modelo de entidades de nuestro sistema no necesita ser modificado ni tener
alguna estructura específica, lo cual nos da ciertas libertades y nos ayuda a

• Baja confiabilidad en el mercado informático.
• La falta de madurez pues es relativamente nuevo, más aún si se compara con
los ORMs que se apoyan en tecnologías de bases de datos relacionales que
disponen de una trayectoria muy importante.

• No son recomendables para grandes magnitudes de datos.
• Faltan herramientas confiables para trabajar con ellas.
• No es bueno a la hora de trabajar con varios lenguajes sobre el mismo

repositorio de objetos (no es muy transparente a la tecnología).

• Las modificaciones que hagamos en nuestro sistema (al modelo de entidades)
no serán trasladadas de una manera trivial sino con un esfuerzo considerable
(no es flexible a los cambios).

• Menor documentación debido a su bajo nivel de madurez en el mercado.
• No es muy utilizado aún.



HIBERNATE
En la implementación con Hibernate se utilizó el mecanismo de archivos de mapeo, en
contra de las anotaciones, para desacoplar el modelo de dominio de la capa de acceso
a datos [2].

Ventajas:

• Al estar apoyado sobre tecnologías de base de datos relacionales:

programación, pues se interactúa (de manera indirecta) con una DB.

o es muy fiable, dado que ha ido evolucionando con el correr de los años.
o Se puede utilizar la base de datos desde casi cualquier lenguaje de
o Ya no preocupa el hecho de interactuar directamente con la base de
datos ya que éste mecanismo es totalmente transparente y simula el
estar trabajando con un repositorio de objetos.

• Fácil de utilizar.
• Actualmente es uno de los más empleados en la industria.



Desventajas:

crear un sistema transparente a la tecnología de acceso a datos que
utilicemos.

• No es necesario el uso de otras tecnologías como en el caso de los ORMs
(Object-Relational Mapping) en los cuales necesitamos un motor de bases de
datos relacional (lo cual conlleva, algunas veces, a la adquisición de la licencia
correspondiente).


Desventajas:

• No se usan construcciones del lenguaje tales como:
o Predicate<T>, se reemplaza con el Criterion
o

IComparer<T>, se reemplaza de determinada manera con el uso de
Criterion

• El hecho de que en determinadas ocasiones no se usen construcciones
específicas del lenguaje, como en el caso del Criterion, dificulta la construcción
de una capa de acceso a datos que sea transparente a la tecnología
subyacente (en este caso un ORM).

• Uso obligatorio de un id para cada clase persistente.
• Los métodos de todas las clases persistentes deben ser virtuales.
• Necesidad de todos los métodos de seteo sin excepción para todos los

atributos de cada clase persistente.

• De esta forma, hay que tener en cuenta ciertas restricciones a la hora de crear
el modelo de entidades del negocio lo cual impide que este mecanismo sea
totalmente transparente a la tecnología de acceso a datos utilizada para la
persistencia (peor aún si elegimos las anotaciones como mecanismo de
mapeo).

• Se debe crear los archivos de mapeo de todas las clases persistentes, lo cual
conlleva a posibles errores e inconsistencias con respecto al modelo relacional
de la base de datos. Si bien hay herramientas disponibles para hacer este
trabajo de manera automática, esta es una cuestión adicional a considerar al
momento de crear el sistema.

• Al tener que utilizar una base de datos relacional, de acuerdo a la elegida, tal

vez resulte necesario adquirir su respectiva licencia.

• Se debe poner un constructor por defecto (sin argumentos), de manera

obligatoria.


Conclusión
Se recomienda el uso de Hibernate ya que, si bien se tienen que hacer ciertas
modificaciones en el modelo de entidades, su utilización en la industria es masiva y se
ve respaldada en la confiabilidad que brindan los motores de bases de datos
relacionales con décadas de desarrollo. Aunque se ha demostrado cierta superioridad
en cuestión de velocidad por parte de DB4O dicho beneficio no supera el hecho de
que todavía no es una herramienta madura en nuestro mercado laboral.

Agradecimientos:
Al
contribuyeron al desarrollo del mismo.

Referencias:
[1] http://www.db4o.com/ - página oficial del repositorio de objetos DB4O.
[2] http://www.hibe
  • Links de descarga
http://lwp-l.com/pdf19102

Comentarios de: Esquema de Persistencia en Lenguajes orientados a objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad