Selección de un proyecto ORM para Android (nivel mínimo de API 7)

Actualmente tengo una aplicación, donde su principal problema de rendimiento es el uso de base de datos basada en archivos consistía en las respuestas JSON.

Me gustaría volver a escribir mi aplicación para utilizar la función de base de datos SQLite.
Ya que soy perezoso, me gustaría usar algún tipo de ORM.

Hasta ahora sólo he encontrado dos grandes bibliotecas de ORM:

  • ORMLite
  • GreenDAO ORM
  • DB4O
  • ActiveAndroid

Mi objetivo principal es aumentar el rendimiento en el trabajo con los datos en la medida de lo posible

Pero he encontrado dos posibles problemas con esas bibliotecas.

  • ORMLite utiliza anotaciones , que es un gran problema de rendimiento en pre-nido de abeja debido a este error

  • GreenDAO está utilizando algún tipo de generador de código, y que me ralentizaría en el desarrollo, ya que tendría que escribir el generador, y luego utilizar el código generado. Y no me gusta esta idea.

  • DB4O es JPA, que siempre he considerado lento y pesado en el uso de la memoria, por lo tanto inadecuado para dispositivos de gama baja (recuerde que la API de Android v7)


Ad @ChenKinnrot :
La carga estimada debe ser suficiente para pensar en usar un ORM.
En mi caso se trata de 25-30 tablas únicas, y al menos 10 uniones de tabla (2 – 4 tablas a la vez). Alrededor de 300-500 campos únicos (columnas)


Así que mis preguntas son:

  1. ¿Debo usar la capa ORM / JPA en la aplicación de Android?
  2. Si es así, ¿qué biblioteca me recomendaría usar? (Y por favor agregue algunos argumentos también)

5 Solutions collect form web for “Selección de un proyecto ORM para Android (nivel mínimo de API 7)”

He utilizado ORMLite y lo encontré sencillo una vez que lo consiguió (unas pocas horas), bastante potente y no causó ningún problema de rendimiento (aplicación probada en Gingerbread en HTC deseo y HTC Hero).

Lo volveré a usar en cualquier proyecto que necesite usar un DB para.

Una capa ORM es atractiva.

Sin embargo, en la práctica escribo ORM simple yo mismo o uso el paradigma del proveedor de contenido , que no coopera bien con ORM.

He mirado en algunas bibliotecas existentes de ORM (principalmente ORMLite, activeAnroid ) pero todos me asustaron lejos pues parece no tan fácil conseguir comenzado.

"Estamos hablando de 25-30 tablas únicas, y por lo menos 10 uniones de tabla.Alrededor de 300-500 campos únicos (columnas)"

Si tiene patrones fijos y limitados de cómo los datos serán consultados, yo recomendaría escribir el ORM / sql usted mismo.

Mis 2 centavos.

Si te preocupa el rendimiento de tu aplicación, recomiendo greenDAO. Se le ahorrará de escribir mucho código aburrido, por lo que la generación de código no debe ser un problema. A cambio, generará también entidades y pruebas de unidad de DB para usted.

Tengo algunos conocimientos para compartir así: ORM por definición es más lento que escribir su propio sql, se supone que para simplificar la codificación de acceso a los datos, y proporcionar una solución genérica, genérico = corre más lento que escribir sus consultas, si sabes sql bien .

La verdadera pregunta es cómo el buen rendimiento que desea obtener, si es el mejor posible, no consideran ningún marco de mapeo de datos, sólo el marco de generación SQL que le ayudará a escribir cosas más rápido, pero le da un control total de todo.

Si no quieres sacar el máximo provecho del sql db, usa orm, no tengo experiencia con este orm que mencionaste, así que no puedo decir qué elegir.

Y su DB no es tan grande y complejo por lo que el tiempo que ahorrará con orm no es un problema.

En mi experiencia, tuve muchos beneficios de usar motores ORM. Sin embargo, hubo el caso cuando tuve que lidiar con problemas de rendimiento.

Tuve que cargar alrededor de 10 000 filas de la base de datos, y con una implementación estándar (estaba usando ORMLite), tomó alrededor de 1 minuto para completar (depende de la CPU del dispositivo).

Cuando necesitas leer una gran cantidad de datos de la base de datos, puedes ejecutar SQL sin problemas y analizar los resultados por ti mismo (en mi caso, solo necesitaba consultar 3 columnas de la tabla). ORMLite también le permite recuperar resultados en bruto. Con esto, el rendimiento se ha incrementado en 10 veces. ¡Las 10 000 filas se cargaron en 5 segundos o menos!

  • Intent.ACTION_PICK devuelve el cursor vacío para algunos contactos
  • ¿Cómo ejecutar la consulta en la base de datos SQLite en android?
  • onDowngrade () en SQLiteOpenHelper (u otra forma de no bloquearse al degradar)
  • Sqlite en Android: Cómo crear una función sqlite dist db - que se utilizará en la aplicación para calcular la distancia utilizando lat, largo
  • Cómo consultar una tabla FTS4 de contenido externo pero devolver columnas adicionales de la tabla de contenido original
  • Consulta SQL de Android con dos cláusulas "Where"
  • ¿Cómo actualizar la tabla en sqlite?
  • Conexión de SQLite se filtró aunque todo se cerró
  • Android - CursorLoader y SQLite sin proveedor de contenido
  • Cómo utilizar la consulta para el argumento de selección múltiple utilizando una columna de selección
  • SQLCipher para Android: icudt46l.zip realmente necesario?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.