2016-01-20 1 views
1

Je prends des données de l'API REST sous la forme de JSON.Comment enregistrer des POJO dans SQLite et les récupérer?

enter image description here

En utilisant http://www.jsonschema2pojo.org/, classes créées. En utilisant GSON, je convertis des données en POJO. Les objets (tonnes d'entre eux) sont sous la forme d'un arbre hiérarchique: parent inclut les enfants qui peuvent être

  • un autre objet
  • collection
  • d'objets
  • données simples

enter image description here

J'ai essayé d'utiliser différents ORM: SugarORM, RushORM, SquiDB, JDXA. Certains d'entre eux ne supportent pas les relations (une à une, une à plusieurs, plusieurs à plusieurs). Certains d'entre eux nécessite d'ajouter des annotations. JDXA est bon, mais il est payant et la configuration de la cartographie a pris du temps, elle m'a semblé trop complexe.

enter image description here

Cette question peut sembler que demander recomendation bibliothèque ou « l'outil à utiliser », mais vraiment je ne vois pas comment la façon de résoudre ce problème. Comment enregistrer ces POJO dans des tables relationnelles SQLite et les récupérer de manière efficace (en moins de temps)? Dois-je utiliser ORM? ou je devrais écrire l'insertion et la sélection du code moi-même?

+0

Joe, pouvez-vous s'il vous plaît envoyer vos définitions de classe de modèle et la spécification de mappage JDXA à [email protected] afin que nous puissions étudier le problème? Merci, –

+0

Parfois l'erreur "Table ou vue introuvable" se produit si l'emplacement du fichier de base de données dans la spécification de mappage JDXA n'est pas spécifié correctement. JDXA ORM s'attend à ce que le fichier de base de données SQLite se trouve dans le répertoire des bases de données de l'application. Ce répertoire se trouve dans _/data/data//databases_. Donc, s'il vous plaît assurez-vous que l'instruction JDX_DATABASE dans le fichier de mappage (.jdx) est quelque chose comme ceci: _JDX_DATABASE JDX: jdbc: sqldroid: /data/data/com.mycompany.myapp/databases/example.db; JDX_DBTYPE = SQLITE; ... _ –

Répondre

1

Si la vitesse est votre principale préoccupation l'écriture de vos propres requêtes seront les plus efficaces comme toutes ces bibliothèques ont une logique overhead pour les rendre génériques.

Je utiliserais toujours un ORM en raison du temps de développement qu'il économise et la différence de vitesse ne sera pas énorme. Je m'inquiéterais seulement d'un ORM étant trop lent si vous chargez/enregistrez régulièrement plus de 5000 objets. Ceci est basé sur l'analyse comparative effectuée lors de l'écriture de RushOrm.