Java Micro ORM等价物

Kyn*_*nth 56 java subsonic massive dapper petapoco

Java中与Dapper,PetaPoco,MassiveCodingHorror等微型ORM最接近的等价物是什么?

tom*_*cki 26

sql2o看起来像是一个Dapper替代品 - 围绕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);
Run Code Online (Sandbox Code Playgroud)

github - https://github.com/aaberg/sql2o

网站 - http://www.sql2o.org/


Arn*_*ism 22

我推荐Spring JDBC模板.虽然它不是一个"真正的"ORM,但很高兴使用Hibernate看起来有点过分.

  • queryForObject看起来有点笨重,难道不能用java中的泛型来完成吗?例如:查询<Car>("select*from Cars")? (3认同)
  • @ sam-saffron是的!使用SimpleJdbcTemplete - http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-SimpleJdbcTemplate (3认同)
  • 那听起来很合适; p Dapper,PetaPoco和Massive也*不是"真正的"ORM - 他们专注于做一个非常好的简单数据访问工作,它涵盖了很高的用例数. (2认同)

Luk*_*der 17

以下是与简单JDBC交互时"缓解痛苦"的工具列表:

这里有一个工具列表,它们超越了简单的JDBC,即提供一些ORM/ActiveRecord工具

  • jOOQ(这个可能不符合微观ORM的条件)
  • JaQu
  • ActiveJDBC(这个更像是一个ActiveRecord API,而不是一个ORM)
  • MyBatis(这个侧重于SQL模板,但也有一些映射功能)
  • EBean


tom*_*cki 6

另一个有趣的光ORM是JDBI.这是五分钟的介绍

它有两个替代API:

流畅的API

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();
Run Code Online (Sandbox Code Playgroud)

SQL Object API,其中SQL语句映射到具有声明性接口的方法,如下所示:

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();
Run Code Online (Sandbox Code Playgroud)