Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin + Room for Dummies

Kotlin + Room for Dummies

Presentación de Cornershop para meetup de Kotlin Santiago

Es un ejemplo basico de Kotlin con Room, donde repasamos conceptos de SQLite

:)

Harttyn Arce

June 14, 2018
Tweet

Other Decks in Technology

Transcript

  1. ¿Qué es Room? Room es una capa de abstracción sobre

    SQLite, la cual nos permite el acceso fluido a la base de datos aprovechando toda la potencia de SQLite.
  2. ¿Qué es SQLite? ▶ SQLite es una base de datos

    que nos permite almacenar información directamente en el dispositivo. ▶ Sirve para manejar cache de datos, y lograr que nuestras apps persistan datos sin internet. ▶ Se pueden hacer SELECT, WHERE, LIKE y todo lo que hacemos normalmente en una bases de datos. ▶ La información solo se almacena dentro del Dispositivo.
  3. ¿Vamos a la Antigua? ▶ En la antigüedad, usar SQLite

    no era lo más amigable del mundo. ▶ Se probaba la base de datos en tiempo de ejecución (Prueba y Error). ▶ Si hoy vamos a la documentación oficial de Android, nos dice que no la ocupemos link
  4. Un poco de Contexto ¿Qué es un ORM? ORM =

    Object-Relational mapping Es un mapeo objeto-relacional, básicamente consiste en pasar una tabla de base de datos a una clase orientada a objetos, donde los campos de las tablas son los atributos de las clases. En todos los lenguajes de programación existen ORM y en Android la verdad es que hay muchos.
  5. Algunos ORM que nacieron antes de Room 1. greenDAO 2.

    Sugar ORM 3. En Android-Arsenal hay 2 páginas con casi 50 ORM en Android XD
  6. ¿Por qué tantos ORM, si SQLite es la Cumbia? ▶

    Para todos los que nos tocó desarrollar con Sqlite, sabemos que es un trabajo tedioso y poco amigable. ▶ Por lo mismo, probablemente, ya teníamos algún ORM regalón :)
  7. Un poco de Historia ▶ Mi primer proyecto (Pituto) desarrollado

    en android fue en abril del año 2012, de los tiempos de Eclipse
  8. ¿En qué consistía el Proyecto? El proyecto consistía en registrar

    el uso de agua utilizada para regar los predios en la cordillera. Este registro se hacía en cuaderno y querían modernizar su proceso de trabajo usando una todopoderosa Tablet AOC MW0812, tablet, LCD 8, Arm 1.2Gb, Wifi/ Bluetooth, Sistema Android 2.3 . ¿Cómo almacenar información en una tablet si estamos en los cerros donde no existe la conexión a internet? SQLite, La vieja confiable
  9. ¿Cómo logré desarrollar semejante maravilla? Pues con SQLite :) Ahora

    volviendo al tema principal de nuestra charla, vamos a ver un poco de código para saber cómo funciona SQLite.
  10. Tras el desarrollo con SQLite ¿Qué tenemos que hacer para

    almacenar información con SQLite a la antigua? ▶ Crear una clase llamada “DataHelper” donde básicamente creamos los Script para crear tablas.
  11. Tras el desarrollo con SQLite ¿Qué tenemos que hacer para

    almacenar información con SQLite a la antigua? 1. Insert, Select.
  12. Tras el desarrollo con SQLite ¿Qué tenemos que hacer para

    almacenar información con SQLite a la antigua? 1. Updates, Deletes
  13. Tras el desarrollo con SQLite Resumen ▶ Script concatenados en

    String. ▶ Cursores para los Select. ▶ Abrir y cerrar la conexión a la base de datos en cada transacción.
  14. Kotlin SQLite Existe una alternativa en Kotlin para trabajar con

    SQLite que es de la familia Anko. Esta se llama Anko-SQLite Después de ver su funcionamiento, vi que traía varias mejoras que trabajar directamente con SQLite: ▶ Te olvidas de abrir y cerrar la conexión a base de datos para operar con ella. ▶ Facilita la creación de tablas. ▶ Te facilita el trabajo con Cursores. Pero en general, sigue siendo poco amigable trabajar con ella. Por eso recomiendo utilizar Room.
  15. Ejemplo Clásico, Registro de Usuarios Vamos a crear una tabla

    que se llame “Usuarios”, esta tabla tendrá los siguientes campos: ▶ Id. ▶ nombre. ▶ apellido. ▶ email. ▶ clave. Pero en Kotlin, ya que de eso se trata esta charla :)
  16. Utilizando la BD en Kotlin Para poder utilizar Room, es

    necesario que este se ejecute en un hilo secundario, ya que no es permitido utilizarlo en el hilo de UI
  17. Utilizando la BD en Kotlin Las Alternativas que tenemos son:

    ▶ HandlerThread ▶ AsyncTask (A lo vieja escuela) ▶ RxJava ▶ Coroutines de Kotlin