Check the new version here

Popular channels

GreenDAO: olvídate de SQLite con un ORM para Android

Bastante harto de SQLite (sí, no sé si lo podrían haber hecho más complicado), me puse a buscar alternativas, y di con GreenDAO. Básicamente se trata de un ORM (Object-relational mapping) para Android que lo que te permite es tratar los registros de una base de datos como objetos en tu código de manera transparente.
¿Qué conseguimos con esto? Realizar las tareas CRUD (create-read-update-delete) mediante objetos en vez de tener que utilizar consultas directas.

Hay varios de este estilo para Android, pero me quedo con GreenDAO porque supera en velocidad a su más directo competidor (ORMLite) y la librería ocupa bastante menos.
En la página Web tenéis un enlace para descargar un par de proyectos que incluyen un ejemplo con el que trastear. Aquí sólo pretendo contar un poco como funciona, la curiosidad hará el resto.
Creación de la base de datos con greenDAO
Para crear una base de datos, la recomendación es utilizar un proyecto aparte con el que podemos generar todas las clases necesarias. Lo más fácil es usar el GreenDAOGenerator que habrás descargado de su Github.
Lo primero es crearse un elemento de tipo Schema, indicando el nombre del paquete para las clases que vas a generar. Por ejemplo:
Schema schema = new Schema(1, "com.limecreativelabs.ejemplodao"); Al esquema se le pueden añadir Entities, que a nivel de base de datos se corresponde con las tablas. A estas entidades se les indica qué campos van a tener realizando simples llamadas a métodos:

Entity empleado = schema.addEntity("Empleado");
empleado.addIdProperty();
empleado.addStringProperty("nombre");
empleado.addStringProperty("apellidos");
empleado.addStringProperty("puestoDeTrabajo");
emplado.addIntProperty("edad");

La property de tipo ID se corresponde con el estándar de SQLite, que implica generar un campo con el nombre “_id” de tipo long. Los nombres de las columnas, a nivel de curiosidad, los genera en mayúsulas y separando palabras por guiones donde hay mayúsculas. Así puestoDeTrabajo genera un campo PUESTO_DE_TRABAJO.
Para la generación de las clases para trabajar con la BD se necesita indicar la carpeta donde queremos que se despliegue:
DaoGenerator daoGenerator = new DaoGenerator();
daoGenerator.generateAll(schema, "../MiProyecto/src-gen");

Ya tenemos listas las clases con las que trabajar.
Operaciones CRUD con greenDAO
Las operaciones básicas se convierten ahora en algo muy simple. Primero se necesita recuperar el acceso a la base de datos de empleados:
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "empleados-db", null);
db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
EmpleadoDao empleadoDao = daoSession.getEmpleadoDao();
Con empleadoDao ya puedo realizar todo tipo de operaciones contra la base de datos.
Creación
Crear un empleado es tan fácil con instanciar un objeto e insertarlo mediante empleadoDao:
Empleado e = new Empleado(null, "Antonio", "Leiva", 27);
empleadoDao.insert(e);
Borrado
Igual de sencillo. El borrado se realiza mediante id:
empleadoDao.deleteByKey(id); Actualización
Modifica lo que quieras en el objeto y utiliza el método update:
e.setEdad(28);
empleadoDao.update(e);
Consultas
Con el método queryBuilder, se pueden hacer consultas sin necesidad de SQL, muy al estilo de Linq de .NET. Os pongo un ejemplo, pero esta es la parte más compleja, así que lo mejor es visitar la documentación:
List empls = empleadoDao.queryBuilder()
.where(Properties.Nombre.eq("Antonio"))
.orderAsc(Properties.Edad)
.list();
Conclusión
Si soy sincero, aún no lo he probado en un proyecto real, pero tengo muy buenas referencias de esta librería y por lo que he podido probar simplifica mucho el tratamiento de registros con la base de datos, que personalmente me parece una de las tareas más tediosas de tratar. Directamente lo voy a probar en un proyecto que tengo empezado y ya os contaré la experiencia. Si alguien se anima o lo conoce, me encantaría saber su opinión.
¿Te ha gustado? Compártelo
- Fuente http://www.limecreativelabs.com/greendao-sqlite-orm-android/#sthash.c88eqESN.dpuf



Baja videos de youtube sin instalar nada y hasta con los subítulos

link: https://www.youtube.com/watch?v=jlPz_IQxGmE

0
0
0
0No comments yet