¿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.


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


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.


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.


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.


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


9

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


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/


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.


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


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.


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.


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



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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.