Les meilleures pratiques pour SQLite DB et ContentProvider
Mon application Android est la lecture et l'écriture locale SQLite DB à partir de quelques Activités différentes et un Service. Assez standard. Mais je ne suis pas heureux avec la façon dont j'ai tous les détails base de données stockée en tant que constantes que je puis utiliser n'importe où j'ai accès à la DB. J'ai été conseillé pour envelopper la DB dans un ContentProvider. Ça sonne bien pour moi. Alors que je suis refactoring mon code, j'ai pensé que je voudrais poser:
- Quelles sont vos pratiques exemplaires pour les DB de stockage de données dans Android?
- Où et comment avez-vous le magasin "CREATE TABLE" les déclarations, les noms de colonnes, d'autres SQL?
- Auriez-vous l'esprit de partage d'une liste des classes d'instancier et de ce qui se passe dans chaque (ContentProvider, DatabaseProvider, DatabaseHelper...)?
- Comment coordonnez-vous la structure de votre Android DB avec un serveur DB disponibles via une interface REST?
Oui, je me rends compte que je suis à l'éternel "où est la Android objet-relation-framework de mapping?" 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 astuces!
- Sur une langue-dans-joue la note, voici une vidéo pertinente à partir de l'Android Dev site: youtube.com/watch?v=i293O69nuRo
- Exactement la question que j'allais poser! Merci!
Vous devez vous connecter pour publier un commentaire.
Nous avons été tuning ORMLite sur Android pour un certain temps maintenant et il fonctionne bien. ORMLite prend en charge Android natif de la base de données des appels et prend également en charge d'autres bases de données via JDBC. Vous annoter vos classes, des champs et l'utilisation de la base de classes DAO de persister à SQLite.
DatabaseHelper
qui permet de créer une mise à jour de votre base de données. Vos activités s'étendentOrmLiteBaseActivity
(ou du service ou de l'onglet) qui donne accès à l'aide et DAOs.Espère que c'est un peu utile.
Je ne suis pas un vrai fan de SQL et de la façon dont il est traité dans android, j'utilise donc l'objet de base de données NeoDatis. Qu'il est fondamentalement juste vous permet de stocker et récupérer des objets Java dans un fichier plat stockées sur l'appareil très facilement. db40 est aussi une autre alternative de l'Objet de Base de données qui fonctionne sur android.
N'ai pas eu de problèmes à l'aide de cette approche, vous pouvez noter que, y compris les NeoDatis bibliothèque permettra d'augmenter votre APK taille par ~700kb.
Je ne sais pas que j'ai une réponse, d'autres que je n'aime pas vraiment la façon dont c'est géré, je trouve ça très salissant ainsi. J'ai l'habitude de suivre le modèle donné dans le bloc-notes exemple qui vient w/le SDK.
En raison de cela, je suis en train de travailler sur mon propre mini ORM, à l'aide de l'annotation et de la gestion de tout cela. Pour l'instant tout fonctionne bien mais je n'ai pas travaillé tout encore.
Vous pouvez également avoir un coup d'oeil à Androrm. C'est un open source orm outil conçu spécialement pour android. Il devrait vous aider avec toutes les bases de données les choses liées.
Juste pour compléter la liste de plus en plus ... un Autre ORM est l'ORM solution fournie avec le BARACUS Cadre. Il n'est pas inteded pour construire l'entreprise de la taille des bases de données, c'est plus pour le stockage d'un couple d'entités dans la base de données et de les rendre accessibles par l'application. Il n'y a pas de codegeneration approche à l'intérieur de celui-ci; il vous suffit d'écrire votre entité pojo, un rowmapper et votre table de def. Par conséquent, vous pouvez faire usage de DAOs, l'Injection de Dépendance, CIO style de soutien du cycle de vie et beaucoup plus.
ORM Fonctionnalités :
Pour les plus sophistiqués de la base de données des trucs (à l'aide de l'ORM est un peu travail à la main comme au bon vieux printemps rowmapper temps) je suis actuellement une réflexion sur l'ajout de ormlite intégration.
Pour plus de détails du code il suffit de cocher la tutoriel de l'application sur github