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.
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'
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 ());
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; "
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 (); "
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
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
// 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
// Obtiene Rusia, Noruega "
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..