L'API Stream en Java 8 ou l'API Linq en C# permettent de manipuler des collections d'objets en s'inspirant du langage SQL, mais ces concepts, bien que très puissants imitent le SQL sans forcément supporter l'ensemble de son potentiel.
Imaginez que vous ayez un ensemble de collection à manipuler : utiliser des fonctions d'agrégat (COUNT(), MIN(), MAX(), SUM(), AVG()), réaliser des jointures externes (LEFT/RIGHT/FULL) etc... Y arriverez-vous de manière aisée avec l'API Stream ou Linq ? Ne préféreriez-vous pas simplement réaliser cela à partir d'une simple requête SQL ?
L'API InMemorySQL a été créée afin de simplifier ce type de manipulation avancée, sans ré-inventer le SQL mais en le ré-utilisant, vos collections représentent tout simplement des tables (avec des alias t1, t2, tn etc) sur lesquels vous pourrez effectuer un ensemble d'opérations SQL puis en retirer une nouvelle collection d'objet.
Voici un exemple d'utilisation :
import fr.ekinci.dbmsreplication.inmemorysql.InMemorySQL;
//...
String sqlRequest = "SELECT t1.id_d1 AS id_d1, t1.attr2 AS attr2, t1.attr3 AS attr3, t2.id_d2 AS id_d2, t2.attr4 AS attr4, t3.id_d3 AS id_d3, t3.attr5 AS attr5 " +
" FROM t1" +
" LEFT JOIN t2" +
" ON t1.id_d1 = t2.id_d1" +
" LEFT JOIN t3" +
" ON t2.id_d2 = t3.id_d3" +
" ORDER BY t1.id_d1, t2.id_d2, t3.id_d3";
List
Set
Collection
List
.add(Dumb1.class, ldb1) // ldb1 aura pour alias t1
.add(Dumb2.class, ldb2) // ldb2 aura pour alias t2
.add(Dumb3.class, ldb3) // ldb3 aura pour alias t3
.executeQuery(ReturnDumb.class, sqlRequest);
N'hésitez pas à importer le projet grâce à Maven (ou autres outils de gestion de dépendances) :
L'API InMemorySQL vous permet :
En savoir plus :
:fleche: N'hésitez pas à donner votre avis :)
:fleche: Projet Github : https://github.com/eau-de-la-seine/dbms-replication
:fleche: Mon site : https://gokan-ekinci.appspot.com/
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.