¿Alguna buena herramienta ORM para el desarrollo de Android? [cerrado]

285

¿Alguien que trabaja en Android ('gPhone') tiene o conoce un lugar donde puedo encontrar una buena herramienta ORM para él? El código está escrito en Java y la base de datos es SQLite. Lo que me gustaría encontrar es una herramienta que, dada la definición del objeto, pueda generar automáticamente las tablas y las funciones CRUD (eso sería genial), o, salvo eso, una herramienta que pueda tomar la definición de la tabla, la definición del objeto, y autogenerar la funcionalidad CRUD. El problema es que todo esto debe suceder dentro del marco de Android, que tiene sus propias convenciones sobre cómo funciona el acceso a la base de datos.

GWLlosa
fuente
No creo que haya ninguno disponible ahora.
mparaz
2
es 2014. Pensé que mencionaría Sprinkles ( github.com/emilsjolander/sprinkles ) ya que nadie lo ha mencionado. 500 estrellas en github, en meaven central, observadores de contenido, vale la pena revisar
AndroidGecko
Es 2015. Software Tree ha lanzado recientemente JDXA , un ORM simple pero potente y flexible para Android. Apoya la herencia, relaciones uno a uno, uno a muchos, muchos a uno y muchos a muchos. El modelo de programación no intrusivo amigable POJO (Objetos Java simples simples) de JDXA no requiere que cambie sus clases Java de ninguna manera: - No es necesario subclasificar sus clases de dominio de ninguna clase base - No es necesario saturar su código fuente con anotaciones - No se necesitan clases DAO - No se genera código fuente
Damodar Periwal
Mira este bonito tutorial sobre JDXA ORM .
Damodar Periwal
Si prefiere el código natural de Android sin dependencias adicionales de la biblioteca, eche un vistazo al ejemplo del generador de código de clase de SQLite . Está basado en anotaciones y admite claves primarias combinadas, restricciones únicas combinadas e indexación.
RookieGuy

Respuestas:

111

Pensé que solo agregaría mis $ 0.02 aquí sobre mi paquete ORMLite .

Es un reemplazo liviano de Hibernate y utiliza llamadas nativas de la base de datos del sistema operativo Android para admitir SQLite en Android. También es compatible con muchos otros tipos de bases de datos que utilizan JDBC en otras arquitecturas. Tenemos una lista de correo de Android para preguntas ORMLite.

gris
fuente
1
¿ORMLite tiene soporte incorporado para relaciones (uno | muchos) a (muchos | uno)? No puedo encontrar mucha información sobre eso ... Si no, ¿hay planes para esto?
ferdystschenko
1
Depende de lo que quieras decir con "apoyo". Hay un código de ejemplo sobre cómo usar "objetos extraños" que es cómo usar uno a muchos y hay ejemplos sobre cómo usar tablas de unión para lograr muchos a muchos ( ormlite.com/docs/examples ). Publique en la lista de usuarios con más preguntas ( groups.google.com/group/ormlite-user ).
Gray
77
Sí, ciertamente es más grande que ActiveAndroid. Mucha más funcionalidad también, por supuesto. También software gratuito en lugar de la licencia de AA. Pero si el tamaño es el objetivo, ORMLite no es para ti.
Gris
44
@ Gray Ironic ya que se supone que es "Lite": P
Salman von Abbas
55
De hecho @SalmanPK. Aunque hay diversos grados de lite. :-)
Gris
66

Esta pregunta no puede envejecer, pero los marcos sugeridos sí. Entonces, aquí hay una lista de lo que considero importante en dichos marcos para la comparación:

  • ¿Hay un artefacto Maven o Gradle? (eso es una gran ventaja dependiendo de si usas maven o gradle, obviamente)
  • ¿Se puede acceder al código de una manera fácil, incluida una descripción rápida de los compromisos para juzgar la actividad? (el código alojado en github es una ventaja definitiva para mí, en ese caso)
  • Gestión de versiones: ¿hay versiones / etiquetas de versión y artefactos para ello? (hay algunos que están alojados en github y requieren git clone u ofrecen el tarball maestro para descargar, para mí una gran desventaja, si no es que incluso las etiquetas de lanzamiento se configuran y abordan en el archivo README)
  • Como el tamaño importa, puse algunas pistas donde era fácil pasar (no descargué nada, así que de esos proyectos que no ofrecen artefactos de lanzamiento no hay tamaños)

Y aquí hay una lista de marcos con notas sobre los puntos anteriores. Busqué un poco más como aBatis y Hadi, pero agregué solo aquellos que tuvieron alguna actividad después de 2011.

No he probado ninguno de esos, pero tal vez pueda ahorrarle un poco de tiempo a los lectores actuales al enumerar los proyectos activos actuales. Agregue un comentario si conoce otros proyectos que satisfacen algunos de los puntos anteriores y tienen un desarrollo serio (con el tiempo).

EDITAR (noviembre de 2013): actualizó la lista al estado actual de los proyectos. Algunos de estos han agregado etiquetas de lanzamiento a sus repositorios de github, así como el soporte de Maven / Gradle. ¡Buen trabajo!

EDITAR (2015 Abr): actualizó la lista, agregó Sprinkles (según el comentario de @AndroidGecko) y Realm.io.

Risadinha
fuente
Recomiendo usar Realm, ¡es realmente rápido y fluido trabajar!
Crono
39

Si el rendimiento y el tamaño del código son importantes, consulte greenDAO . Soy el autor, y mi motivación para crear otro ORM fue evitar la reflexión en los puntos críticos. Resultó que greenDAO puede ser hasta 4 veces más rápido que ORMLite. Consulte la página de características para obtener más detalles.

Markus Junginger
fuente
55
Parece bastante bueno, pero tener que generar el Dao es un desvío para mí :(
Chris.Jenkins
44
Sí, generar código es un paso adicional para los desarrolladores, pero le ahorra una gran cantidad de rendimiento en la aplicación. Los resultados de la base de datos de arranque y análisis son significativamente más rápidos. Otras herramientas dependen de la reflexión, que es cruelmente lenta en Android.
Markus Junginger
1
Estoy usando greenDao en mis proyectos, y estoy muy satisfecho con eso.
mabac
3
@greenrobot ¿tiene algunas vitrinas de "grandes aplicaciones" con su lib?
StErMi
1
@StErMi Path está utilizando greenDAO. Tienen> 1 M de instalaciones. Ver github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger
10

No sé de nada que sea exactamente lo que está pidiendo, pero hay una alternativa a SQLite que puede encontrar útil si sus requisitos de arquitectura son flexibles. Puede valer la pena echar un vistazo a db4o :

slf
fuente
Tuve buenos resultados con DB40 ... aunque quiero probar Android activo ...
Ben
1
activeandroid.com se ve bien, estoy ansioso por darle un giro
slf
9

Parece que ActiveAndroid ($ 20) puede ser exactamente lo que necesita.

Michael Pardo
fuente
14
Sé que no estás intentando hacer nada inestable aquí, pero ¿puedes revelar tu afiliación en tus publicaciones cuando mencionas uno de tus propios productos en SO? Sé que su nombre está en el pie de página de la página vinculada, pero estamos tratando de tomar medidas enérgicas contra el astroturfing (lo cual no es así), por lo que les pedimos a todos que sigan las mismas pautas de divulgación. Gracias.
Bill the Lizard
44
Solo un aviso, ActiveAndroid no es gratis.
gak
77
ActiveAndroid ahora es gratuito y de código abierto - pardom.github.com/ActiveAndroid
Michael Pardo
7

Me gustó ActiveAndroid. Parece que está escrito específicamente para Android. Eso se siente como una ventaja para mí.

Tengo algo de experiencia en Ruby on Rails y si te gusta la forma Rails de ActiveRecord puedes moverte rápidamente con esta biblioteca.

https://www.activeandroid.com/

Tony Topper
fuente
Marco agradable, pero entra en conflicto con la biblioteca org.codehous.jackson, por lo que si lo usa en su proyecto no podrá usar ActveAndroid
endryha
1
¿Cómo entra en conflicto? ¿Lo reportaste como un error en tracker.activeandroid.com ?
Michael Pardo
Quizás eche un vistazo a androrm.the-pixelpla.net tiene la mayoría de las características y diría aún más. Además: es gratis y de código abierto.
philgiese
6

También estoy buscando un ORM en Android. Probé ActiveAndroid , NeoDatis y DB4O , y creo que voy a utilizar uno de los dos últimos.

NeoDatis y db4o son realmente similares, por lo que me gustaría un consejo para elegir el mejor. ¿Alguien está usando uno de ellos en su proyecto? Lo usaré para la aplicación gratuita y de pago, pero parece que los dos no tienen ninguna limitación de licencia para Android.

Hay un punto de referencia aquí que parece decir que es más rápido que NeoDatis db4o, pero no sé si podemos basar mi opinión sobre esto.

Chayy
fuente
Db40 y NeoDatis son bases de datos de objetos, solo el tamaño de estas es totalmente prohibitivo para cualquier uso en Android
Bostone
@ DroidIn.net ¿podría proporcionar un enlace que sustente su comentario?
Sergio
3

Un recién llegado más: android-active-record. Es un marco de persistencia muy ligero y fácil de usar para Android respaldado por SQLite http://code.google.com/p/android-active-record/

Vladimir Kroz
fuente
Parece que todavía está en desarrollo temprano, ¡pero vale la pena vigilarlo!
GWLlosa
Probé: es un buen comienzo, pero necesita mucho trabajo para estar listo para el horario estelar
Bostone
2

ActiveRecordJS de Aptana es un ORM de Javascript que debería ejecutarse en el gPhone. Está diseñado para trabajar con Jaxer y Gears. Cuando utiliza los adaptadores Jaxer, puede conectarse a SQLLite.

ACTUALIZACIÓN: No creo que lo haya dejado claro, pero ActiveRecordJS es un ORM que ejecuta el lado del cliente, lo que podría ser una ventaja para usted en el gPhone.

David Robbins
fuente
En el código de Java? ¿O en código JavaScript?
GWLlosa
Estoy bastante seguro de que está hablando de una solución Javascript diseñada exclusivamente para aplicaciones basadas en navegador (Web). No veo cómo se relaciona con el desarrollo de aplicaciones nativas para Android.
Brian Lacy
1

He desarrollado mi propia implementación de JPA ORM para Android. Todavía no está completamente completa, pero puedes anotar la clase con las anotaciones @Entity, @Id, @Column y obtienes entidades JPA que se pueden almacenar y recuperar de la base de datos SQLite. Necesita algunas funciones y limpieza más antes de publicarlo en el público, pero si hay suficiente interés, podría acelerar mi esfuerzo.

Pavel Lahoda
fuente
Suena interesante, ¿ya tienes algo? echar un vistazo / probar Saludos, Martin
MartinGrotzke
Más de un año después, ¿cómo es el progreso en esto? Anotaciones JPA + en Android suena GENIAL!
Spidey
1

Mis propios DroidParts /http://droidparts.org/ acaban de llegar a la v0.5. Es una biblioteca DI / ORM y más.
No hay mucha documentación, pero incluye una aplicación de muestra.

Yanchenko
fuente
1
Puede estar agregando la documentación adecuada es una buena idea.
Subin Sebastian el
0

Tenía experiencia negativa con db4o (v. 8): la indexación no funcionó correctamente (excepción, etc.). Por lo tanto, no pude evitar crear duplicados en tablas extrañas al tener un objeto en la estructura del objeto. Explicación más detallada en mi pregunta . Espero que algún día sea mejor.

Oleksii Malovanyi
fuente