Quel serait l'équivalent le plus proche en Java d'un Micro ORM tel que Dapper , PetaPoco , Massive o CodageHorreur ?
Réponses
Trop de publicités?Sql2o semble être une alternative à Dapper, une enveloppe fine autour de JDBC.
String sql =
"SELECT id, category, duedate " +
"FROM tasks " +
"WHERE category = :category";
Sql2o sql2o = new Sql2o(DB_URL, USER, PASS);
List<Task> tasks = sql2o.createQuery(sql)
.addParameter("category", "foo")
.executeAndFetch(Task.class);
github - https://github.com/aaberg/sql2o
site - http://www.sql2o.org/
Je recommande Modèles Spring JDBC . Bien qu'il ne s'agisse pas d'un "vrai" ORM, c'est un plaisir à utiliser là où Hibernate semble être une surcharge.
Voici une liste d'outils qui "facilitent" l'interaction avec le JDBC simple :
- Le printemps JdbcTemplate
- Apache DbUtils
- JDBI
- sql2o
- persisme
Et voici une liste d'outils qui vont un peu plus loin que le simple JDBC, c'est-à-dire qui fournissent des fonctionnalités ORM / ActiveRecord.
- jOOQ (Celui-ci n'est probablement pas qualifié de micro-ORM)
- JaQu
- ActiveJDBC (Il s'agit plus d'une API ActiveRecord que d'un ORM).
- MyBatis (Celui-ci se concentre sur les modèles SQL, mais possède également des fonctionnalités de mapping)
- EBean
Un autre ORM léger intéressant est JDBI . Voici Introduction de cinq minutes
Il dispose de deux API alternatives :
API fluide
DBI dbi = new DBI(ds);
Handle h = dbi.open();
String name = h.createQuery("select name from something where id = :id")
.bind("id", 1)
.map(StringMapper.FIRST)
.first();
et API des objets SQL où les instructions SQL sont mises en correspondance avec les méthodes avec des interfaces déclaratives comme celle-ci :
public interface MyDAO
{
@SqlUpdate("create table something (id int primary key, name varchar(100))")
void createSomethingTable();
}
DBI dbi = new DBI(ds);
MyDAO dao = dbi.open(MyDAO.class);
dao.createSomethingTable();
Vérifiez également SimpleFlatMapper
Il s'agit d'un simple mappeur ResultSet vers Object performant. Il se branche simplement sur Jdbc et donne de bien meilleures performances que Hibernate Ibatis ou même sql2o. Il intègre facilement JdbcTemplate et fournit des injections de constructeurs, de setter et de champs.