You are on page 1of 23

© UPC. Todos los derechos reservados.

Base de Datos

En este material veremos el tema de las bases de datos de android a través de los siguientes
puntos: Almacenamiento en Bases de Datos, Usar Bases de Datos, los Frameworks y Sugar ORM.
Finalizaremos con ejercicios de aplicación de lo aprendido.
Comencemos!

2
© UPC. Todos los derechos reservados.
Base de Datos

Android brinda varias opciones para hacer persistentes los datos de la aplicación desarrollada.
Las opciones de almacenamiento de datos son las siguientes:
Shared Preferences, que almacenan datos privados primitivos en pares key-value.
Internal Storage, que almacenan datos en la memoria del dispositivo.
External Storage, que almacenan datos públicos en la memoria del dispositivo.
SQLite Databases, que almacenan datos estructurados en una base de datos privada.
Network Connection, que almacena datos en la web en sus propios servidores.
La alternativa a elegir está en función a las necesidades específicas, por ejemplo, si los datos
deberían ser privados para nuestra aplicación o accesibles para otras aplicaciones, o cuánto
espacio de almacenamiento requiere dicha data.

3
© UPC. Todos los derechos reservados.
Base de Datos

Android proporciona soporte completo para las bases de datos de SQLite. Las bases de datos
que serán accesibles por nombre para cualquier clase dentro de la aplicación, pero no fuera de
ella.
Pueden acceder a más información a través del enlace en pantalla.
El método recomendado por Google para armar una base de datos SQLite es crear una clase
descendiente de la clase SQLiteOpenHelper y realizar un override del método onCreate(). Dentro
del método pueden ejecutar un comando SQLite para crear las tablas de sus base de datos.

4
© UPC. Todos los derechos reservados.
Base de Datos

Pasemos al siguiente tema: Object Relational Mapping Frameworks.


Para la escritura de aplicaciones que interactúan con bases de datos locales, se puede optar por
escribir las consultas en SQL o utilizar un Object Relational Mapping Framework (ORM
Framework).
Existen diversos frameworks para ORM.
A manera de ejemplo pueden observar algunos ORM frameworks que gozan de popularidad en
la comunidad de developers. Algunos se basan en anotaciones, otros en clases con
funcionalidad base de las cuales deberían heredar sus clases modelos.

5
© UPC. Todos los derechos reservados.
Base de Datos

Uno de los frameworks que es simple de aprender y recordar es el SugarORM.


Pueden acceder por medio del enlace en la pantalla.
La incorporación de SugarORM a la aplicación que están desarrollando es relativamente sencilla.
Veamos a detalle el archivo Gradle, siguiendo por Manifest, Entities, Instance, Query, Update,
Delete, Bulk, Relations I, Relations II, Queries & Relations, y, finalmente, Assignment.

6
© UPC. Todos los derechos reservados.
Base de Datos

Primero necesitan adicionar la línea de programación a la sección dependences del archivo


Gradle del módulo APP.

7
© UPC. Todos los derechos reservados.
Base de Datos

A continuación, indicar en el AndroidManifest la clase Application para que se genere la


instancia de la APP desarrollada por ustedes. Para ello indicar el atributo con el valor SugarApp.
Adicionalmente cuentan con los campos de meta-data: DATABASE, VERSION, QUERY_LOG Y
DOMAIN_PACKAGE_NAME.

8
© UPC. Todos los derechos reservados.
Base de Datos

Para declarar entidades, basta con cumplir dos requisitos: especificar que la clase modelo
extienda SugarRecord. Y mMantener el constructor por defecto.

9
© UPC. Todos los derechos reservados.
Base de Datos

Para guardar una instancia de entidad, sólo requiere invocar al método save(). En el caso del
nuevo objeto creado por ustedses, esto se traduce en una operación de INSERT en la base de
datos, de otro modo se comporta como una operación de UPDATE.

10
© UPC. Todos los derechos reservados.
Base de Datos

Para buscar una instancia de una entidad, cuentan con el método findById(), el cual requiere la
clase con la que retornará el resultado y el valor de Id que están buscando.

11
© UPC. Todos los derechos reservados.
Base de Datos

Para actualizar una instancia de entidad, pueden generarla con el método findById(), realizar
luego las modificaciones sobre sus atributos y guardar la nueva versión del objeto con el método
save().

12
© UPC. Todos los derechos reservados.
Base de Datos

Para eliminar una instancia de entidad, pueden utilizar el método delete(). Esto se comporta a
nivel de la base de datos como una sentencia DELETE.

13
© UPC. Todos los derechos reservados.
Base de Datos

SugarORM ofrece dos métodos que permiten aplicar operaciones a colecciones de objetos.
listAll() permite obtener todos los objetos de una entidad. deleteAll() elimina todos los objetos
de una entidad, a la vez que elimina los registros en la tabla de base de datos.

14
© UPC. Todos los derechos reservados.
Base de Datos

SugarORM recomienda implementar las relaciones de tipo One-To-Many como un método


independiente. Por ejemplo, asumiendo una relación entre Author y Book en la que un objeto
Author puede escribir cero, uno o muchos objetos Book, la relación en el lado de Author se
representa como un método getBooks(), tal como se aprecia en el ejemplo.

15
© UPC. Todos los derechos reservados.
Base de Datos

Por otro lado, en el caso de Book, la dependencia de Author se representa con un atributo del
tipo Author, tal como se aprecia en el ejemplo. SugarORM genera de forma automática una
columna author en la tabla book, conteniendo un foreign key hacia la tabla author.

16
© UPC. Todos los derechos reservados.
Base de Datos

Se puede incluir el atributo relacionado en una consulta, utilizando el valor del método getId()
como el valor para el criterio de búsqueda, tal como se observa en el ejemplo.

17
© UPC. Todos los derechos reservados.
Base de Datos

La asignación de valores para atributos objeto está alineada con el paradigma orientado a
objetos. De esta forma, tal como se aprecia en el ejemplo, el asignar un nuevo valor a un
atributo objeto se implementa con una asignación que recibe el valor resultante de la llamada al
método accesor getAuthor() que retorna un objeto Author.

18
© UPC. Todos los derechos reservados.
Base de Datos

Revisemos lo que estudiamos juntos sobre Bases de Datos en Android.


Aprendimos que Android nos proporciona varias alternativas para almacenar los datos, siendo
éstas: Shared Preferences, Internal Storage, External Storage, SQLite Databases ó Network
Connection.
Tuvimos oportunidad de conocer que Android cuenta con soporte integrado para manejo de
bases de datos en SQLite.
Las clases que forman parte de la aplicación pueden acceder por nombre a la base de datos.
Una alternativa para integrar el soporte de bases de datos era extender la clase
SQLiteOpenHelper y que nuestras operaciones de creación de tablas por ejemplo, podían
realizarse en un override del método onCreate() de dicha clase.
Por otro lado, aprendimos que una alternativa para gestionar el almacenamiento era utilizar un
Object Relational Mapping (ORM) Framework.
Vimos que existían diversos frameworks que implementaban este tipo de solución, como por
ejemplo Sugar ORM entre otros.
Aprendimos que, a fin de poder integrar este framework al proyecto, debíamos realizar cambios
a nivel del archivo graddle y el archivo manifiest.

19
© UPC. Todos los derechos reservados.
Base de Datos

En adición a ello, las clases que requerían implementar persistencia de datos querían cumplir
con dos requisitos, extender la clase SugarRecord y contar con una versión del método
constructor sin parámetros.

20
© UPC. Todos los derechos reservados.
Base de Datos

21
© UPC. Todos los derechos reservados.
Base de Datos

22
© UPC. Todos los derechos reservados.
Base de Datos

23
© UPC. Todos los derechos reservados.