Choisir un projet ORM pour Android (niveau API minimum 7)

J'ai actuellement une application, où le principal problème de performance consiste à utiliser une base de données basée sur des fichiers, constituée de réponses JSON.

J'aimerais réécrire ma demande pour utiliser la fonctionnalité de la base de données SQLite.
Comme je suis paresseux, j'aimerais utiliser une sorte d'ORM.

  • L'animation s'efface
  • N'a pas réussi à résoudre com.google.firebase: firebase-core: 10.0.1
  • Appelez le sujet principal du fil secondaire en Java / Android
  • LinearLayout superposé Support CoordinatorLayout
  • Consommation d'énergie WebSockets
  • Utilisez la voix sans voix hors ligne dans Android 4.1 (Jelly Bean) de ma application?
  • Jusqu'à présent, je n'ai trouvé que deux grandes bibliothèques ORM:

    • ORMLite
    • GreenDAO ORM
    • DB4O
    • ActiveAndroid

    Mon objectif principal est d' augmenter les performances en travaillant avec les données autant que possible

    Mais j'ai trouvé deux problèmes possibles avec ces bibliothèques.

    • ORMLite utilise des annotations , un problème de grande performance en pré-nid d'abeille en raison de ce bug

    • GreenDAO utilise une sorte de générateur de code, et cela me ralentirait au fur et à mesure du développement car j'aurais à écrire le générateur, puis utiliser le code généré. Et je n'aime pas trop cette idée.

    • DB4O est JPA, que j'ai toujours considéré comme lent et lourd sur l'utilisation de la mémoire, donc inadapté aux périphériques bas de gamme (rappelez-vous l'API Android v7)


    Ad @ChenKinnrot :
    La charge estimée devrait suffire à penser à utiliser un ORM.
    Dans mon cas, il s'agit d' environ 25-30 tables uniques, et au moins 10 tables jointes (2 à 4 tables à la fois). Environ 300-500 champs uniques (colonnes)


    Donc, mes questions sont les suivantes:

    1. Dois-je utiliser la couche ORM / JPA dans une application Android?
    2. Si oui, quelle bibliothèque me recommanderiez-vous utiliser? (Et ajoutez aussi quelques arguments)

  • Android Firebase DynamiteModule: Impossible de charger le descripteur du module
  • Google Maps SDK avec nouvel émulateur Intel Atom x86
  • Suppression de chaînes inutilisées lors de l'optimisation ProGuard
  • OnPostExecute non appelé après l'achèvement AsyncTask
  • Définir la clé et la valeur dans le spinner
  • Android Webview Anchor Link (Jump link) ne fonctionne pas
  • 5 Solutions collect form web for “Choisir un projet ORM pour Android (niveau API minimum 7)”

    J'ai utilisé ORMLite et l'ai trouvé simple une fois que vous l'avez pris (quelques heures), assez puissant et n'a pas causé de problèmes de performance (application testée en Gingerbread sur HTC et HTC Hero).

    Je vais l'utiliser à nouveau dans tous les projets dont je dois utiliser un DB.

    Une couche ORM est attrayante.

    Cependant, dans la pratique, j'écris simplement ORM moimême ou j'utilise le paradigme du fournisseur de contenu , qui ne coopère pas bien avec ORM.

    J'ai examiné certaines bibliothèques ORM existantes (principalement ORMLite, activeAnroid ), mais elles m'ont toutes effrayées car elles ne semblent pas si faciles à démarrer.

    "Nous parlons de 25-30 tables uniques et au moins 10 jointures de table. Environ 300-500 champs uniques (colonnes)"

    Si vous avez des modèles fixes et limités de la façon dont les données seront interrogées, je vous recommanderais d'écrire l'ORM / sql vous-même.

    Mes 2 cents.

    Si vous êtes préoccupé par la performance de votre application, je recommanderais GreenDAO. Cela vous permettra d'écrire beaucoup de code ennuyeux, de sorte que la génération de code ne devrait pas constituer un problème. En retour, il générera également des entités et des tests d'unité DB pour vous.

    J'ai eu des connaissances à partager: ORM, par définition, est plus lent que d'écrire votre propre sql, il est supposé simplifier le codage de l'accès aux données et fournir une solution générique, générique = s'exécute plus lentement que vous écrivez vos requêtes, si vous connaissez bien sql .

    La vraie question est de savoir comment les bonnes performances que vous voulez obtenir, si cela est le mieux possible, ne considérez aucun cadre de cartographie de données, uniquement un cadre de génération de sql qui vous aidera à écrire des choses plus rapidement, mais vous donne tout le contrôle de tout.

    Si vous ne voulez pas tirer le meilleur parti du sql db, utilisez orm, je n'ai aucune expérience avec ce que vous avez mentionné, donc je ne peux pas dire quoi choisir.

    Et votre base de données n'est pas si grande et complexe, de sorte que le temps que vous économiserez avec l'orm n'est pas un problème.

    Dans mon expérience, j'ai eu beaucoup d'avantages à utiliser les moteurs ORM. Cependant, il y avait le cas lorsque je devais faire face à des problèmes de performance.

    J'ai dû charger environ 10 000 lignes de la base de données, et avec une implémentation standard (j'utilise ORMLite), il a fallu environ 1 minute pour compléter (dépend de la CPU de l'appareil).

    Lorsque vous devez lire beaucoup de données à partir de la base de données, vous pouvez exécuter SQL simple et analyser les résultats vous-même (dans mon cas, j'ai seulement besoin de faire une requête pour 3 colonnes de la table). ORMLite vous permet également de récupérer les résultats bruts. Par là, la performance a augmenté de 10 fois. Les 10 000 lignes ont été chargées en 5 secondes ou moins!

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.