mejor - orm para java
¿Alguna buena herramienta ORM para el desarrollo de Android? (16)
Aunque esta es una publicación antigua, el tema sigue siendo relevante. Por lo tanto, quiero compartir un artículo interesante y un buen enfoque para resolver la mayoría de los problemas mencionados en la pregunta:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
Espero que alguien encuentre esto tan útil como yo!
¿Alguien que trabaje en Android (''gPhone'') tiene o sabe de un lugar donde pueda encontrar una buena herramienta de ORM? 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 (que sería increíble), o, a excepción de eso, una herramienta que pueda tomar la definición de la tabla, la definición del objeto y auto-generar 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.
Esta pregunta no puede envejecer, pero sí los marcos sugeridos. Entonces, aquí está primero una lista de lo que encuentro importante en dichos marcos para 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, incluyendo un resumen rápido de los compromisos para juzgar la actividad? (El código alojado en github es una ventaja definitiva para mí, en ese sentido)
- Administración de versiones: ¿existen etiquetas / artefactos de liberación / liberación para ello? (hay algunos que están alojados en github y requieren clones de git u ofrecen el tarball maestro para su descarga; para mí, un gran inconveniente, si ni siquiera las etiquetas de liberación están establecidas y se tratan en el archivo README)
- Como el tamaño importa, puse algunos consejos donde era fácil de entender (no descargué nada, así que de los proyectos que no ofrecen artefactos de liberación no hay tamaños)
Y aquí hay una lista de marcos con notas sobre los puntos anteriores. Busqué más como aBatis y Hadi, pero solo agregué aquellos que tenían alguna actividad después de 2011.
- http://ormlite.com/ , Maven artifact, 52 kB, SVN, el sitio web es ... difícil pero parece que hay muchos ejemplos, según http://ormlite.com/changelog.txt la última versión es 4.48 desde 2013, https://github.com/j256/ormlite-core (etiquetas de publicación), última actividad, marzo de 2015
- greenDAO , buen mantenimiento, artefacto Maven , enfoque: rendimiento rápido, tamaño pequeño, poco consumo de RAM. Github: https://github.com/greenrobot/greenDAO/ (etiquetas de lanzamiento,> 2300 estrellas), última actividad noviembre de 2014
- https://github.com/roscopeco/ormdroid , tamaño pequeño, última actividad agosto de 2014
- ActiveAndroid , https://github.com/pardom/ActiveAndroid (> 2300 estrellas), buen mantenimiento, comunidad, no hay etiquetas de liberación (puntos de descarga a master tarball), artefacto Maven, última actividad octubre de 2014
- http://droidparts.org , https://github.com/yanchenko/droidparts (etiquetas de lanzamiento,> 600 estrellas), también inyección de dependencia, artefacto Maven, mantenido activamente
- http://www.androrm.com , https://github.com/androrm/androrm (etiquetas de publicación), última actividad 02 de enero de 2014 (github)
- github.com/emilsjolander/sprinkles (etiquetas de lanzamiento,> 600 estrellas), última actividad en mayo de 2014, artefacto de Maven (gracias @AndroidGecko)
- http://realm.io , https://github.com/realm/realm-java reemplaza no solo a ORM sino también a SQLite, también para iOS (etiquetas de lanzamiento,> 1600 estrellas), mantenido activamente, propio repositorio de Maven
No he probado ninguno de ellos, pero quizás pueda ahorrar un poco de tiempo a los lectores actuales al enumerar los proyectos activos de hoy en día. Agregue un comentario si conoce otros proyectos que satisfagan algunos de los puntos anteriores y tengan algún desarrollo serio (durante algún tiempo) en curso.
EDITAR (2013 Nov): 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 abril): se actualizó la lista, se agregó Sprinkles (según el comentario de @AndroidGecko) y Realm.io.
Este hilo puede proporcionarle algunas para explorar: alternativas ligeras a la hibernación
He desarrollado mi propia implementación de JPA ORM para Android. Aún no está completamente completo, pero puede anotar la clase con las anotaciones @Entity, @Id, @Column y obtener entidades JPA que pueden almacenarse y recuperarse de la base de datos SQLite. Necesita más funciones y limpieza antes de publicarlo, pero si hay suficiente interés podría acelerar mi esfuerzo.
Me gustó ActiveAndroid. Está escrito específicamente para Android que parece. Eso se siente como una ventaja para mí.
Tengo algo de experiencia con Ruby on Rails y si te gusta la forma de RailR de ActiveRecord puedes moverte rápidamente con esta biblioteca.
Mi propio DroidParts /http://droidparts.org/ acaba de llegar a v0.5. Es una biblioteca DI / ORM y más.
No hay mucha documentación, pero incluye una aplicación de muestra.
No conozco 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 echarle un vistazo a db4o :
Pensé que solo agregaría mis $ 0.02 aquí sobre mi paquete ORMLite:
Es un reemplazo liviano para Hibernate y utiliza llamadas de base de datos nativas del sistema operativo Android para soportar SQLite en Android. También admite muchos otros tipos de base de datos utilizando JDBC en otras arquitecturas. Tenemos una lista de correo de Android para preguntas de ORMLite.
Si el rendimiento y el tamaño del código son importantes, visite greenDAO . Soy el autor de eso, y mi motivación para crear otro ORM fue evitar la reflexión en los puntos de acceso. Resultó que greenDAO puede ser hasta 4 veces más rápido que ORMLite. Echa un vistazo a la página de características para más detalles.
También estoy buscando un ORM en Android. NeoDatis ActiveAndroid , NeoDatis y db4o , y creo que NeoDatis uno de los dos últimos.
NeoDatis y db4o son realmente similares, así 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.
Aquí hay un punto de referencia que parece decir que NeoDatis es más rápido que db4o, pero no sé si podemos basar mi opinión en esto.
Tuvo una experiencia negativa con db4o (v. 8): la indexación no funcionó correctamente (excepción, etc.). Así que no logré evitar la creación de duplicados en tablas externas al tener un objeto en la estructura de objetos. Una explicación más detallada en mi question . Espero que algún día sea mejor.
Un recién llegado más: android-active-record. Es muy ligero y fácil de usar. Marco de persistencia para Android respaldado por SQLite http://code.google.com/p/android-active-record/
Esta herramienta es muy simple y fácil de usar.
ActiveAndroid ($ 20) parece que puede ser exactamente lo que necesitas.
ActiveRecordJS de Aptana es un ORM de Javascript que debe 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 dejé en claro, pero ActiveRecordJS es un ORM que se ejecuta en el lado del cliente, lo que podría ser una ventaja para usted en el gPhone.
https://github.com/ahmetalpbalkan/orman
Orman framework puede ayudarte. Está especialmente diseñado para eso y es muy pequeño y útil.