2009-12-03 19 views
25

¿Hay buenas capas de abstracción de bases de datos/mapeos relacionales de objetos/implementaciones de ActiveRecord/como se llamen para Android? Soy consciente de que db4o es oficialmente compatible, pero tiene un tamaño bastante grande y prefiero usar una base de datos más convencional (SQLite).capa de base de datos de nivel superior para Android?

+12

voy a animar a que se quede lo más cerca posible del "metal" como sea posible. La mayoría de estos dispositivos no son como servidores, donde puedes arrojar caballos de fuerza serios en estas interminables capas de abstracción. Estos dispositivos no son potentes y cada llamada al método que haces tiene tanto un golpe de rendimiento como un golpe de batería. Debes pensar en cómo lograr el máximo con la menor cantidad de aros para atravesar.Agregar una capa de abstracción no va a hacer más que desacelerar la aplicación y simplemente quemar más batería haciendo lo mismo que haría con SQL básico. – MattC

+0

+1 a MattC. Con una vida útil limitada de la batería y la batería a tener en cuenta, realmente creo que desea mantenerse alejado de las herramientas ORM en Android. –

+0

db4o no admitiría Android de forma continuada si la huella era inaceptable ... –

Respuesta

-4

SQLite es explícitamente parte de Android:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Sin embargo puede que tenga que crear su propia capa de abstracción (generador de consultas para consultas sencillas), o realizar cualquier transacción con SQL.

¿Tal vez http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html es lo que necesita?

+0

Sé que hay SQLite incorporado en Android: lo que estoy buscando es algo más de alto nivel. – user222469

1

También hay Neodatis y Prest (Lite).
He jugado con Prest hace un año y concluyó que no vale la pena.
Después de todo, a) Android se ejecuta en un dispositivo bastante restringido con ~ 16mb de espacio de almacenamiento por aplicación yb) Sus clientes realmente apreciarían el rendimiento y el bajo consumo de energía.
Así que mi consejo es ir con SQLite y SQL manuscrito. No es difícil en absoluto y las envolturas proporcionadas por Android SDK son realmente agradables.

EDITAR: En 2012 el consejo sería utilizar el componente ORM de DroidParts (que es mi proyecto).

5

Probar ActiveAndroid. Es de código abierto y gratuito (Apache Version 2.0).

Desde el sitio web:

ActiveAndroid es un ORM estilo de registro activo (objeto relacional mapeador). [...] ActiveAndroid le permite guardar y recuperar registros de la base de datos SQLite sin tener que escribir una sola declaración SQL . Cada registro de la base de datos está perfectamente integrado en una clase con métodos como save() y delete().

[...] El acceso a la base de datos es una molestia, por decir lo menos, en Android. ActiveAndroid se encarga de todo lo relacionado con la configuración y el desorden, y todo con solo unos sencillos pasos de configuración.

5

Existe un proyecto 'android-active-record' que proporciona la abstracción de ActiveRecord para acceder a la base de datos SQLite de Android. Está disponible aquí: http://code.google.com/p/android-active-record

Permite eliminar la mayor parte de la codificación de texto modelo al realizar operaciones CRUD sobre las entidades de base de datos y también minimiza los esfuerzos para crear/mantener una estructura de base de datos

17

yo soy el autor principal del ORMLite que fue diseñado ser pequeño [ish] pero aún proporcionar una funcionalidad de nivel superior. ORMLite realiza llamadas a las API de bases de datos nativas del sistema operativo Android para admitir su funcionalidad ORM.Consulte la siguiente información general

http://ormlite.com/sqlite_java_android_orm.shtml

Éstos son algunos ejemplos de aplicaciones de Android:

http://ormlite.com/docs/android-examples

+0

Recientemente empecé a desarrollar mi propio envoltorio ligero para la interfaz SQLite de Android. Tenía varios objetivos: no necesitaba código autogenerado, no había interfaces engorrosas o clases base abstractas, usaba anotaciones para marcar beans arbitrarios, y una interfaz simple: algo tan simple como llamar a un método en una clase de ayuda para persistir o cargar un DAO. La interfaz de Android terminó por estorbar y tuve que eliminar el diseño de alto nivel que comencé. ORMLite parece que no es el complemento perfecto para mis requisitos, pero hasta ahora se ve realmente bien. Recomiendo echarle un vistazo. –

+0

Déjame saber lo que falta Juan. Más comentarios de Android en la lista de correo del usuario serían útiles. – Gray

+0

@John ¿Puedes proporcionar un enlace para esta "envoltura liviana" que desarrollaste? Gracias – Otto

0

Tenga una mirada en Androrm. Es de código abierto y está bien documentado (see here). Si alguna vez trabajó con django, notará que la sintaxis es muy similar.

Androrm también admite clases de abstracción para los tipos de campo más comunes, además de campos relacionales. De esta manera, le permite consultar sus datos de una manera muy sencilla con muy poco esfuerzo de su parte.

1

Me enfrenté al mismo problema y miré tanto android-active-record como ActiveAndroid. Descubrí que android-active-record no manejaba las cosas que me importaban (relaciones, por ejemplo), y ActiveAndroid no es gratuito. Por lo tanto, decidí escribir mi propia biblioteca. Se llama AndroidRecord y es hosted on GitHub y puede hacer con ella lo que quiera (creo que voy a ir con la licencia de MIT). Uso esto todos los días y estoy contento con él, pero me encantaría recibir comentarios.

Si necesita saber cómo usarlo, estoy trabajando en la documentación. Si lo necesita de inmediato, puede consultar this lame example project que debería ser suficiente para meter los dedos. También puede enviarme un correo electrónico por supuesto.

2

Si el rendimiento y el tamaño importan, debería echar un vistazo a nuestra herramienta ORM de código abierto greenDAO. Lo escribimos porque no queríamos comprometer la velocidad. Otras herramientas dependen en gran medida de la reflexión, que es muy lenta en Android. A pesar del pequeño tamaño (< 100k), admite relaciones, constructores de consultas, etc.

0

Estaba comparando los conceptos básicos de ormlite y greendao hace algún tiempo. Es posible que desee echar un vistazo there. Planeo escribir algo de seguimiento con cosas más avanzadas en el futuro cercano, pero por ahora es solo una cosa básica. En mi propio proyecto estoy usando GreenDAO.

2

Enchufe desvergonzado, pero he estado trabajando en un nuevo marco de Android de código abierto llamado Infinitum. Una de sus características principales es un ORM que tiene una API de criterios similar a Hibernate y algunas otras características ingeniosas (asociaciones, carga diferida, etc.). Todavía está en sus primeras etapas, pero creo que está llegando bastante bien.

12

Probé el Sugar ORM, que es muy básico (y fácil de usar) pero funcionó para mis necesidades.

Sugar website

+1

¿conoces alguna comparación entre esta y otras alternativas? tal vez un punto de referencia? Quiero saber qué tan bien funciona para que no ralentice demasiado la aplicación. –

+0

No, pero si busca rendimiento, le sugiero que lo use en lugares críticos que no sean de rendimiento y use acceso directo a la base de datos o escriba métodos de ayuda en las clases de dominio. Estoy pensando en algo como Person.findAllByCityAndAge (String city, int age) {algún código de rendimiento probado, no es necesario usar Sugar} – enTropy

+0

¿Cómo manejaste los cambios en la base de datos? ¿Cómo notifica a los "observadores" que deberían actualizarse? Similar a los cargadores, que no son utilizables aquí? –

2

me han escrito un nuevo ORM, para android, que está dirigido y ser lo más fácil posible de implementar. Es compatible con listas y migración libre de SQL un par de cosas que siempre encontré tenían una sobrecarga en otras bibliotecas.

http://www.rushorm.com/

Cuestiones relacionadas