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.

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.

Publié par Benoît Guérout

Benoît évolue depuis 7 ans — dont 2 chez Xebia — sur des architectures orientées Web et affectionne une approche simple et pragmatique des développements. HTML5, Backbone, CSS3, Mongo+Jongo, Rest sont ses passions du moment. Kiss !

Publié par Yves Amsellem

Développeur depuis 5 ans — les 2 derniers chez Xebia — Yves tire de son expérience sur des sites à fort trafic une culture de la qualité, de l'effort commun et de l'innovation. Spécialisé du style d'architecture ReST, il intervient sur des projets web à forte composante JavaScript et NoSQL. Avec Benoît Guérout, il développe la librairie open source Jongo — Query in Java as in Mongo shell

Commentaire

5 réponses pour " Jongo = Mongo + Java // le 21 mars au Mongo User Group "

  1. Published by , 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?

  2. Published by , 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 ?

  3. Published by , 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.

  4. Published by , Il y a 11 ans

    @Yves
    Merci pour les détails sur Jongo. Cela semble très prometteur!

  5. Published by , 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.