Il y a 11 ans -
Temps de lecture 1 minute
Jongo = Mongo + Java // le 21 mars au Mongo User Group
Le 21 mars, le Mongo User Group à la gentillesse d’accueillir les développeurs de Jongo.
- Sujet : Jongo, exploiter Mongo en Java avec aisance
- Speakers : Benoît Guérout et Yves Amsellem
- Date : 21 mars 2012 dès 19h45
- Lieu : Zenexity, 64 Rue Taitbout 75009
- Inscription : S’inscrire sur le Mongo User Group Meetup
Si Mongo est plein de qualités, les exploiter à l’aide de son driver Java peut être délicat. Des sucres syntaxiques en simplifient d’ailleurs l’usage, Morphia – le plus populaire – permet d’écrire des requêtes à l’aide de builders et d’exploiter les résultats unmarshallé en objets Java. Dans leur lignée, Jongo propose une nouvelle approche : écrire directement les requêtes en chaînes de caractères (et récupérer les résultats unmarshallés).
En un clin d’oeil :
// Mongo shell db.peoples.find({age: {$gt: 18}})
// Jongo Iterable<People> adults = peoples.find("{age: {$gt: 18}}").as(People.class);
// Java driver Iterable<BSONObject> adults = peoples.find(new BasicDBObject("age", new BasicDBObject("$gt", 18)));
// Morphia Iterable<People> adults = ds.createQuery(People.class).field("age").greaterThan(18);
Les retours sont bienvenus sur l’api à l’étude et les sources GitHub.
Commentaire
5 réponses pour " Jongo = Mongo + Java // le 21 mars au Mongo User Group "
Published by Dominique , Il y a 11 ans
Question bête mais quel est l’intérêt réel d’écrire les requêtes en Mongo Shell ?
Performance?
Y’a des benchs par rapport a Morphia?
Published by Sebastien , Il y a 11 ans
J’ai rapidement regardé : ça a l’air pas mal du tout ! Ayant un peu exploré MongoDB je me suis demandé pourquoi il n’est pas possible d’élaborer une requete directement en JSON.
En ce qui concerne les requêtes paramétrées (très pratiques) offertes par Jongo : avec JDBC on a été habitué à utiliser ‘?’ comme caractère de remplacement. Vous utilisez ‘#’. Y a-til une raison particulière ?
Published by Yves Amsellem , Il y a 11 ans
@Dominique Écrire des requêtes BSON nous semble plus naturel que d’utiliser l’approche — déjà controversée en SQL — de l’api Criteria. L’écriture est celle documentée sur mongodb.org, elle est compatible avec les nouveautés sans nécessiter de développements et est sans équivoque dans le code : combien de fois avons-nous été dubitatifs face à une requête de plusieurs lignes en Criteria sans pouvoir dire pour sûr la requête effective ?
Bien entendu cela a, en plus, un avantage important sur les performances : nos premiers calculs — dont nous publierons le source — donne Jongo deux fois plus rapide que Morphia pour le marshalling (la sauvegarde) et l’unmarshalling (le requêtage). L’écart se creuse encore davantage avec l’augmentation de la volumétrie.
Published by Dominique , Il y a 11 ans
@Yves
Merci pour les détails sur Jongo. Cela semble très prometteur!
Published by Benoît Guérout , Il y a 11 ans
@Sebastien
En effet nous utilisons le caractère de remplacement ‘#’ dans les requêtes JSON.
Nous avons voulu marquer une différence avec les paramètres JDBC ‘?’ qui implique la notion de requête précompilée (ie. PreparedStatement).
Suite à vos remarques, nous avons crée une tâche https://github.com/bguerout/jongo/issues/28 pour permettre à l’utilisateur de l’API de choisir son caractère de remplacement.