105 votes

Existe-t-il une bonne bibliothèque de construction SQL dynamique en Java ?

Quelqu'un connaît une bonne bibliothèque de construction SQL pour Java, par exemple Squiggle (qui n'est plus entretenu, semble-t-il). De préférence, un projet en développement actif.

De préférence avec une syntaxe comme Zend_Db_Select quelque chose qui permettra de faire une requête comme

String query = db.select().from('products').order('product_id');

49voto

ponzao Points 7907

Querydsl y jOOQ sont deux choix populaires.

6voto

codevour Points 3246

Je peux recommander jOOQ . Il offre de nombreuses fonctionnalités intéressantes, ainsi qu'un DSL intuitif pour SQL et une approche de rétro-ingénierie extrêmement personnalisable.

jOOQ combine efficacement SQL complexe, la sécurité des types, la génération de code source, les enregistrements actifs, les procédures stockées, les types de données avancés et Java dans un DSL fluide et intuitif.

6voto

qxo Points 79

ddlutils est mon meilleur choix : http://db.apache.org/ddlutils/api/org/apache/ddlutils/platform/SqlBuilder.html

Voici un exemple de création (groovy) :

Platform platform  = PlatformFactory.createNewPlatformInstance("oracle");//db2,...
//create schema    
def db =        new Database();
def t = new Table(name:"t1",description:"XXX");
def col1 = new Column(primaryKey:true,name:"id",type:"bigint",required:true);
t.addColumn(col1);
t.addColumn(new Column(name:"c2",type:"DECIMAL",size:"8,2"));
t.addColumn( new Column(name:"c3",type:"varchar"));
t.addColumn(new Column(name:"c4",type:"TIMESTAMP",description:"date"));        
db.addTable(t);
println platform.getCreateModelSql(db, false, false)

//you can read Table Object from  platform.readModelFromDatabase(....)
def sqlbuilder = platform.getSqlBuilder();
println "insert:"+sqlbuilder.getInsertSql(t,["id":1,c2:3],false);
println "update:"+sqlbuilder.getUpdateSql(t,["id":1,c2:3],false);
println "delete:"+sqlbuilder.getDeleteSql(t,["id":1,c2:3],false);
//http://db.apache.org/ddlutils/database-support.html

4voto

Jarrod Roberson Points 32263

Kit de construction SQL est un framework très flexible, sans dépendance. Le développement est récemment passé de code.google.com à github. Il est également disponible dans le dépôt central de Maven via Sonatype.

3voto

Vladimir Dyuzhev Points 10647

API de critères Hibernate (pas de SQL simple, mais très puissant et en développement actif) :

List sales = session.createCriteria(Sale.class)
         .add(Expression.ge("date",startDate);
         .add(Expression.le("date",endDate);
         .addOrder( Order.asc("date") )
         .setFirstResult(0)
         .setMaxResults(10)
         .list();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X