2009-11-12 17 views
46

Mi aplicación para Android está leyendo y escribiendo en una base de datos SQLite local de algunas actividades y un servicio diferentes. Bastante estándar. Pero no estoy contento con la forma en que tengo todos los detalles de la BD almacenados como constantes que luego uso en cualquier lugar en que acceda a la base de datos. Me han aconsejado que envuelva el DB en ContentProvider. Suena bien para mí. Mientras estoy refacturando mi código, pensé en preguntar:Mejores prácticas para SQLite DB y ContentProvider

  • ¿Cuáles son sus mejores prácticas para el almacenamiento de datos DB local en Android?
  • ¿Dónde y cómo se almacenan las sentencias "CREATE TABLE", los nombres de las columnas y otros SQL?
  • ¿Te importaría compartir una lista de las clases que creas y qué incluye cada una (ContentProvider, DatabaseProvider, DatabaseHelper ...)?
  • ¿Cómo se coordina la estructura de su base de datos Android local con una base de datos del servidor disponible a través de una interfaz REST?

Sí, me doy cuenta de que me estoy poniendo en la perenne "¿dónde está el marco de relación de objetos de Android?" pregunta. Por ahora, tengo curiosidad por saber cómo estructurar sus aplicaciones de Android con lo que está disponible en el SDK estándar.

Como siempre, gracias por los consejos!

+1

En una nota lengua en la mejilla, aquí está el vídeo correspondiente en el sitio Android Dev: http://www.youtube.com/watch?v=i293O69nuRo –

+0

¡Exactamente la pregunta que iba a hacer! ¡Gracias! –

Respuesta

16

Hemos estado sintonizando ORMLite en Android desde hace un tiempo y está funcionando bien. ORMLite es compatible con Android con llamadas a bases de datos nativas y también es compatible con otras bases de datos a través de JDBC. Anota sus clases/campos y usa clases base DAO para persistir en SQLite.

  • Las instrucciones CREATE TABLE se manejan en las clases de utilidad de mi ORMLite. La mayoría de SQL está a cargo de las clases DAO.
  • La sección de Android de online documentation explica la jerarquía de clases. Implementa un DatabaseHelper que ayuda a crear una actualización de su base de datos. Sus actividades extienden OrmLiteBaseActivity (o servicio o pestaña) que da acceso a ayudante y DAOs.
  • ORMLite no proporciona una solución para fusionarse con servidores REST remotos.

Espero que esto sea de alguna ayuda.

0

No sé si tengo una respuesta, aparte de que realmente no me gusta cómo se maneja esto, me parece muy complicado también. Normalmente sigo el patrón dado en el ejemplo del bloc de notas que viene con el SDK.

Debido a esto estoy trabajando en mi propio marco mini ORM, usando la anotación y la gestión de todo esto. Hasta ahora las cosas están funcionando bien, pero aún no he resuelto todo.

+0

Sí, realmente debería pasar por todo el tutorial del bloc de notas. ¡Gracias por el recordatorio! –

1

Por el momento, tengo curiosidad por saber cómo estructurar sus aplicaciones de Android con lo que está disponible en el SDK estándar.

No soy un verdadero fanático de SQL y la forma en que se maneja en Android, entonces utilizo la base de datos de objetos NeoDatis. Básicamente, simplemente te permite almacenar/recuperar objetos Java en un archivo plano almacenado en el dispositivo muy fácilmente. db40 es también otra base de datos de objetos alternativa que funcionará en android.

No he tenido ningún problema con este enfoque, es posible que desee tener en cuenta que incluir la biblioteca NeoDatis aumentará su tamaño de APK en ~ 700kb.

0

También puede consultar Androrm. Es una herramienta orm de código abierto diseñada espacialmente para Android. Debería ayudarte con todo lo relacionado con la base de datos.

+0

Terrible doco para este sin embargo. Ni intente enviar una solicitud de error o función ... – Steven

+0

¿Qué tiene de terrible www.androrm.com/documentation? ¿Y alguna vez has intentado enviar comentarios? – philgiese

+0

Sí, lo he intentado. Tuve que suscribirme a alguna cosa tonta de la comunidad que ni siquiera tenía la opción de contactar a nadie o dejar una publicación en el foro. Terminó como una gran pérdida de tiempo. – Steven

0

Solo para completar la lista más y más ... Otro ORM es la solución ORM proporcionada con el BARACUS Framework. No está destinado a construir bases de datos de tamaño empresarial, es más para almacenar un par de entidades en la base de datos y hacer que sea accesible desde la aplicación. No hay un enfoque de generación de código dentro de él; simplemente escribe tu entidad pojo, un rowmapper y tu tabla def. Por lo tanto, puede hacer uso de DAO, Inyección de Dependencia, soporte de ciclo de vida de estilo IOC y mucho más.

ORM Características hasta ahora:

Para el material de base de datos más sofisticado (usar el ORM es un poco trabajo manual como en el buen tiempo de rowmapper de primavera) Actualmente estoy pensando en agregar integración de ormlite.

Para más detalles de los códigos simplemente comprobar el tutorial application on github

Cuestiones relacionadas