Mon application Android lit et écrit sur une base de données SQLite locale à partir de différentes activités et d'un service. Assez standard. Mais je ne suis pas satisfait de la manière dont j'ai stocké tous les détails de la base de données sous forme de constantes que j'utilise ensuite partout où j'accède à la base de données. On m'a conseillé d'envelopper la base de données dans un ContentProvider. Cela me semble bien. Pendant que je refacturais mon code, je pensais que je demanderais:
Oui, je me rends compte que je suis en train de parler de la pérenne "Où est le cadre de cartographie de relation d'objet Android?" question. Pour l'instant, je suis surtout curieux de savoir comment vous structurez vos applications Android avec ce qui est disponible dans le SDK standard.
Comme toujours, merci pour les pointeurs!
Nous réglons ORMLite sur Android depuis un moment maintenant et cela fonctionne bien. ORMLite prend en charge Android avec les appels de base de données natifs et prend également en charge d'autres bases de données via JDBC. Vous annotez vos classes/champs et utilisez des classes DAO de base pour persister dans SQLite.
DatabaseHelper
qui aide à créer une mise à jour de votre base de données. Vos activités étendent OrmLiteBaseActivity
(ou service ou onglet) qui donne accès aux assistants et aux DAO.J'espère que c'est un peu utile.
Pour l'instant, je suis surtout curieux de savoir comment vous structurez vos applications Android avec ce qui est disponible dans le SDK standard.
Je ne suis pas un vrai fan de SQL et de la façon dont il est géré dans Android, j'utilise donc la base de données d'objets NeoDatis . En gros, il vous permet simplement de stocker/récupérer des objets Java dans un fichier plat stocké sur le périphérique très facilement. db40 est également une autre base de données d'objets alternative qui fonctionnera sous Android.
N'ayant eu aucun problème en utilisant cette approche, vous voudrez peut-être noter que l'inclusion de la bibliothèque NeoDatis augmentera la taille de votre APK de ~ 700kb.
Juste pour compléter la liste de plus en plus… Un autre ORM est la solution ORM fournie avec BARACUS Framework . Il n’est pas prévu de créer des bases de données d’entreprise, mais plutôt de stocker quelques entités dans la base de données et de les rendre accessibles à l’application. Il n'y a pas d'approche de génération de code à l'intérieur de celle-ci; vous écrivez simplement votre entité pojo, un rowmapper et votre table def. Par conséquent, vous pouvez utiliser les DAO, l’injection de dépendance, la prise en charge du cycle de vie de style IOC et bien plus encore.
Caractéristiques ORM jusqu'à présent:
Pour les bases de données plus sophistiquées (utiliser ORM est un peu à la main, comme dans le bon vieux Springmapper), je songe actuellement à ajouter l’intégration ormlite.
Pour plus de détails sur le code, consultez l’application du tutoriel sur github
Vous pouvez également consulter Androrm . C’est un outil open source conçu spécialement pour Android. Cela devrait vous aider avec tout ce qui concerne la base de données.
Je ne sais pas si j'ai une réponse, à part que je n'aime pas vraiment la façon dont cela est géré, je la trouve aussi très confuse. Je suis généralement le modèle donné dans l'exemple de bloc-notes fourni avec le SDK.
Pour cette raison, je travaille sur mon propre mini-framework ORM, en utilisant des annotations et en gérant tout cela. Jusqu'à présent, tout va bien, mais je n'ai pas encore tout réglé.