En marcha con Realm para Android

Introducción

Si ha estado al día con las últimas tendencias en el desarrollo de Android, probablemente haya oído hablar de Realm. Realm es una base de datos liviana que puede reemplazar tanto las bibliotecas de SQLite como las de ORM en sus proyectos de Android.

En comparación con SQLite, Realm es más rápido y tiene muchas características modernas, como el soporte JSON, una API fluida, notificaciones de cambio de datos y soporte de cifrado, todo lo cual hace la vida más fácil para los desarrolladores de Android.

En este rápido consejo, aprenderá los conceptos básicos de Realm para Android. En este tutorial, estaré usando Reino v0.84.1.

1. Agregando reino a un proyecto

Para usar Realm en un proyecto de Android, debe agregarlo como un compilar dependencia en el aplicación módulo de construir.gradle expediente.

compilación genial 'io.realm: realm-android: 0.84.1'

2. Creando un reino

Un reino es similar a una base de datos SQLite. Tiene un archivo asociado que, una vez creado, persistirá en el sistema de archivos de Android.

Para crear un nuevo reino, puede llamar a la estática Realm.getInstance método desde dentro de cualquier Actividad.

java Realm myRealm = Realm.getInstance (contexto);

Tenga en cuenta que llamando Realm.getInstance, sin pasar un Configuración de realm Para ello, resulta en la creación de un archivo Realm llamado default.realm.

Si desea agregar otro reino a su aplicación, debe usar un RealmConfiguration.Builder objetar y darle al archivo Realm un nombre único.

java Realm myOtherRealm = Realm.getInstance (nueva RealmConfiguration.Builder (contexto) .name ("myOtherRealm.realm") .build ());

3. Creando un Objeto de objeto

Cualquier JavaBean puede almacenarse en un Reino una vez que se extiende el Objeto de objeto clase. Si se está preguntando qué es un JavaBean, es simplemente una clase de Java que se puede serializar, tiene un constructor predeterminado y tiene métodos de obtención / establecimiento para sus variables miembro. Por ejemplo, las instancias de la siguiente clase se pueden almacenar fácilmente en un reino:

"java public class Country extiende RealmObject

nombre de la cadena privada; población int privada; public Country ()  public String getName () return name;  public void setName (String name) this.name = name;  public int getPopulation () retorno de la población;  público void setPopulation (población int) this.population = population;  

"

Si desea utilizar una variable miembro de un Objeto de objeto como clave principal, puede utilizar el @Clave primaria anotación. Por ejemplo, aquí está cómo agregaría una clave principal llamada código al País clase:

"java @PrimaryKey private String code;

public String getCode () código de retorno;

public void setCode (String code) this.code = code; "

4. Crear transacciones

Si bien la lectura de datos de un Reino es muy simple, como verá en el siguiente paso, escribir datos en este es un poco más complejo. Realm es compatible con ACID y para garantizar la atomicidad y la coherencia, Realm lo obliga a ejecutar todas las operaciones de escritura dentro de una transacción.

Para iniciar una nueva transacción, use la comenzarTransaccion método. Del mismo modo, para finalizar la transacción, utilice el commitTransaction método.

Así es como crearía y guardaría una instancia de País clase:

"java myRealm.beginTransaction ();

// Crear un objeto País país1 = myRealm.createObject (Country.class); // Establecer sus campos country1.setName ("Norway"); country1.setPopulation (5165800); country1.setCode ("NO"); 

myRealm.commitTransaction (); "

Te habrás dado cuenta de que pais1 No fue creado usando el constructor de la País clase. Para que un Reino administre una instancia de un Objeto de objeto, la instancia debe ser creada usando el Crear objeto método.

Si debe utilizar el constructor, no olvide utilizar el copyToRealm método del relevante Reino objeto antes de cometer la transacción. Aquí hay un ejemplo:

"java // Crear el objeto País país2 = nuevo País (); country2.setName (" Rusia "); country2.setPopulation (146430430); country2.setCode (" RU ");

myRealm.beginTransaction (); País copyOfCountry2 = myRealm.copyToRealm (country2); myRealm.commitTransaction (); "

5. Escribiendo consultas

Realm ofrece una API muy intuitiva y fluida para crear consultas. Para crear una consulta, use la dónde método del relevante Reino y pase la clase de los objetos en los que está interesado. Después de crear la consulta, puede obtener todos los resultados utilizando la encuentra todos método, que devuelve un RealmResultados objeto. En el siguiente ejemplo, recogemos e imprimimos todos los objetos de tipo País:

"java RealmResults results1 = myRealm.where (Country.class) .findAll ();

para (País c: resultados1) Log.d ("resultados1", c.getName ());

// Imprime Noruega, Rusia "

Realm ofrece varios métodos adecuadamente nombrados, como empieza con, termina con, menor que y mas grande que, Se puede utilizar para filtrar los resultados. El siguiente código le muestra cómo puede usar el mas grande que método para obtener sólo aquellos País objetos cuyos población es mayor que 100 millones:

"java RealmResults results2 = myRealm.where (Country.class) .greaterThan ("population", 100000000) .findAll ();

// Obtiene solo Rusia "

Si desea que los resultados de la consulta se ordenen, puede utilizar la findAllSorted método. Como sus argumentos, toma un Cuerda especificando el nombre del campo para ordenar y una booleano especificando el orden de clasificación.

"java // Ordenar por nombre, en orden descendente RealmResults results3 = myRealm.where (Country.class) .findAllSorted ("name", false);

// Obtiene Rusia, Noruega "

Conclusión

En este consejo rápido, aprendiste a usar Realm en un proyecto de Android. Usted vio lo fácil que es crear una base de datos Realm, almacenar datos en ella y consultarla. Para obtener más información sobre Realm para Android, puede consultar la documentación de Java..