(+34) 958084455 informacion[arroba]academiaandroid.com
Esquema ORM GreenDAO

Introducción a ORM y GreenDAO

Post Series: ORM-GreenDAO

¿Qué es el Object-Relational Mapping?

El Object-Relational Mapping (o más conocido por sus siglas en inglés ORM) es una técnica de programación que nos permite convertir datos entre los tipos existentes en un lenguaje de programación orientado a objetos y los utilizados en una Base de Datos relacional, manteniendo su estado más allá de su ejecución (utilización de un motor de persistencia). Es decir, se encarga de transformar las tablas definidas en una Base de Datos en entidades, facilitando y simplificando las tareas más comunes para un programador (crear-leer-actualizar-borrar un registro → CRUD).

En la práctica, el ORM genera una Base de Datos orientada a objetos virtual, a partir de una base de datos relacional

Sus principales características son:

  • Agilidad en el desarrollo software.
  • Son usados de manera mayoritaria en sistemas de Bases de Datos SQL.
  • Mantenimiento y reutilización de código.
  • Encapsulación de datos: se mantiene la integridad de los datos ocultando su estado o el de los datos miembro de un objeto, de forma que sólo se permite su modificación a través de los métodos definidos para dicho objeto.

¿Por qué usarlo en Android?

Como en toda evolución tecnológica, para apreciar en qué hemos mejorado, primero habría que echar una mirada hacia atrás, para comprobar cómo se realizaban estas tareas con anterioridad.

En los primeros desarrollos software, un programa debía acceder físicamente a disco para poder grabar los datos, y por lo tanto se debía implementar toda la lógica de la base de datos en el programa.

Posteriormente, la aparición de las bases de datos relacionales, nos permitió, a través de consultas Transact-SQL, acceder a aquellos datos necesarios para el programa, pero realizando las consultas manualmente dentro del mismo, y por lo tanto, no se aprovechaba precisamente lo que hace fuerte a los lenguajes de programación orientados a objetos, que es el uso de objetos en sus interacciones.

Gracias a los ORMs, gran parte de ese trabajo se realiza de una manera más sencilla, ya que una de sus principales funcionalidades es evitarnos tener que acceder a la capa de datos, y por lo tanto no realizar la conversión de los objetos en tipos de datos primitivos, para mantener la persistencia de objetos.

Logo SQLite

Un ORM nos simplifica el trabajo con SQLite al no tener que acceder directamente a la capa de datos y poder hacerlo a través de objetos

Específicamente en Android, nos permite olvidarnos de la tediosa tarea del uso directo de SQLite, en el que debíamos tener especial cuidado a la hora de guardar registros, debido a que no tiene tipo de datos (permite guardar una cadena de texto en un campo de tipo numérico, con los posibles problemas que pueden generar ese tipo de acciones).

Además, nos permite la reutilización de código, es decir, poder realizar llamadas a los métodos del objeto de datos desde diferentes partes del proyecto, o en proyectos diferentes, y todo esto manteniendo la lógica de negocio en los propios objetos de datos definidos.

Sus principales ventajas las podríamos englobar en las siguientes:

  • Desarrollo fácil y rápido.
  • Abstracción de la Base de Datos mapeada.
  • Capa de seguridad implementada, que evita los ataques SQL injections (inserción de código malicioso en variables incrustadas en sentencias Transact-SQL).
  • Se complementa con el patrón de diseño MVC (Model-view-controller).

ORMs en Android

GreenDAO
Es uno de los ORMs con mayor rendimiento para Android debido a su simplicidad
Consumo mínimo de memoria
Librería poco pesada
Es libre y Open-Source
Generación automática de entidades y DAO
Web GreenDAO

 

ORMLite
Es una librería poco pesada (dos librerías JAR: ormlite-jdbc-4.47.jar y ormlite-core-4.47.jar)
Configuración de sus clases por simple adición de anotaciones Java
Soporte básico para las transacciones de Base de Datos
Soporta varias Bases de Datos (MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB y Sqlite)
Nos proporciona un QueryBuilder que permite crear consultas simples y complejas para nuestras operaciones
Web ORMlite

 

ADA Framework
Creado por Txus Ballesteros (fundador y Chief Technical Officer de Mob&Me)
Al igual que cualquier ORM, facilita todas las tareas relacionadas con las Bases de Datos en SQLite
Además de su potencia, ya que su rendimiento destaca claramente por encima de ORMLite, en comparación su tamaño es bastante reducido en relación a todo lo que ofrece
Una de sus características es que permite gestionar las validaciones y manejar los atributos de las entidades
Github ADAFramework

 

SugarORM
Nos permite simplificar las tareas realizadas sobre la Base de Datos SQLite de Android
Facilita la creación de las Bases de Datos
API sencilla de usar para manipular los objetos de negocio
Configuración mínima: basta con especificar SugarApp como la clase de aplicación en el AndroidManifest.xml (realizar el cambio en el atributo “android:name“ de la etiqueta “Application“)
Web SugarORM

GreenDAO

Surge con la idea de optimizar determinadas tareas realizadas sobre una Base de Datos, en una plataforma cuyos dispositivos tienen una potencia limitada.

Al fin y al cabo, todo ORM está construido para ayudar a realizar de una manera más rápida y amena muchas tareas cotidianas de un desarrollador. Si bien es cierto que cada día surgen nuevas APIs que intentan mejorar otras ya existentes, en este caso GreenDAO cumple adecuadamente con la tarea que vamos a encomendarle.

Nos detendremos en este ORM, profundizando un poco más en su funcionamiento, ya que considero que es una de las APIs más potentes que existen en la actualizad, en lo que concierne a los ORMs que podemos encontrar en la plataforma Android.

Esquema ORM GreenDAO

Esquema Green DAO
(imagen: http://greendao-orm.com/)


GreenDAO es un framework de desarrollo que nos permite crear objetos DAO (Data Access Object: proporciona una interfaz común entre la aplicación y el sistema de almacenamiento de datos), de manera automática a partir de las tablas definidas en nuestra Base de Datos.

Es una API sencilla, que está optimizada para Android, permitiendo agilizar tareas comunes de Base de Datos.

Como se puede ver en el siguiente gráfico, la comparativa de rendimiento entre GreenDAO y ORMLite, está claramente decantada a favor de GreenDAO en operaciones de actualizar, insertar y cargar registros:

Tabla comparativa ORMs

Comparativa de rendimiento entre greenDAO y ORMLite


Autor: José Antonio Gázquez Rodríguez – Academia Android

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *