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)

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!

  • Consulta sqlite de Android para que coincida con la columna que contiene el texto
  • Restablecer autoincremento en Android SQLite
  • ¿Por qué obtengo un error "sqlite3: not found" en un Nexus One enraizado cuando intento abrir una base de datos usando el shell de adb?
  • ¿Qué pasa con multithreading en Android SQLite?
  • Recuperar un nombre de usuario y una contraseña en SQLITE DB por EMAIL_ADDRESS en ANDROID
  • Android sqlite eliminar consulta no funciona
  • Conversión de String en DateTime: Android
  • Consulta SQL para la relación de los hijos progenitores
  • ¿Cómo eliminar todos los registros de la tabla en sqlite con Android?
  • Donde la cláusula en SQLite no funciona en android :(
  • SQLite de Android usando db.query () para JOIN en lugar de rawquery ()
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.