Esta semana estuvo llena de nuevas características:
- incorporación de persistencia en bases de datos sqlite para las aplicaciones móviles
- nuevas configuraciones tanto para aplicaciones de escritorio como para aplicaciones móviles
Persistencia SQLite en aplicaciones móviles:
Gracias a la librería sqlite.js (compilación con asm de la libreria C de SQLite) ahora es posible persistir la información de las aplicaciones para Firefox OS, en una base de datos SQLite. Este librería permite crear una base de datos o cargar desde el sistema de ficheros una. En el caso de las aplicaciones desarrolladas con CRIAX-SDK, se crea una nueva base de datos y se persiste en Indexeddb, esto debido a las opciones limitadas del acceso a ficheros en el Sistema Operativo del teléfono.
Se puso todo el esfuerzo porque el sistema de persistencia fuera el mismo que en las aplicaciones de escritorio. Por suerte la diferencia fue muy ligera debido a que la librería para llevar a cabo esta tarea utiliza callbacks.
En los siguientes trozos de códigos se muestra como se utilizan estas funcionalidades del ORM de CRIAX, CORMX:
En las aplicaciones de escritorio:
1 2 3 4 5 6 7 8 9 | //desde el controladorvar em = //obtener el entity managervar memo = new Memo();memo.setTitulo('nuevo titulo');memo.setContenido('contenido del memo');em.persist(memo);em.flush(); |
En las aplicaciones de móviles:
1 2 3 4 5 6 7 8 9 10 11 12 | //desde el controladorvar em = //obtener el entity managervar memo = new Memo();memo.setTitulo('nuevo titulo');memo.setContenido('contenido del memo');em.persist(memo);em.flush(function(){ //hacer algo una vez que //se haya insertado, actualizado o eliminado}); |
Como se puede apreciar la diferencia es mínima, pues al método flush, del EntityManager se pasa un callback, el cual se ejecutará inmediatamente se termine la acción de persistencia.
Nuevas configuraciones:
Al incorporar la nueva funcionalidad en las aplicaciones móviles, fue preciso reorganizar algunas configuraciones de las aplicaciones, de manera tal que el ORM, supiera como comportarse en dependencia de la aplicación.
1 2 3 4 | //en aplicaciones móvilescriax.app.type : "mobile"//en aplicaciones de escritoriocriax.app.type : "desktop" |
En el caso de las aplicaciones móviles hizo falta cambiar la estructura del esquema de la base de datos para que coincidiera con el existente en las aplicaciones de escritorio.





Genial, que bien me viene este update!
Interesantes características, fijate en esta idea de implementación para el método «flush» del Entity Manager para desktop:
function flush(callback) {
// … codigo actual
if (typeof callback == ‘function’)
callback();
}
esta es una manera de estandarizar la API, pero la ventaja principal es que permite portar con facilidad la capa de acceso a datos entre plataformas (Desktop y Mobil). Es decir que con esta idea el ejemplo para mobiles que se muestra en el articulo debería funcionar igual en desktop.
Saludos.
Muchas gracias Yosbel, llegan un poco tarde pero siempre se tiene en cuenta.