没有Spring的Spring JDBC模板

Pet*_*aný 10 java spring spring-jdbc

是否有类似Spring JDBC Template的Java库,具有相同质量的代码和文档以及类似的数据访问异常层次结构,但没有依赖于其他Spring模块(根据http://mvnrepository.com/artifact/org的核心/ bean/context模块).springframework/spring-jdbc/3.0.6.RELEASE)?

mel*_*lik 14

Spring的JDBC有直接依赖于以下库:spring-core,spring-beansspring-tx.其余的依赖项是可选的,因此您实际上并不需要它们.

如果这些依赖关系对你来说已经很多了,那么你可能会看看Apache DbUtils.

  • 我使用纯JDBC,实现了自己的库,使用了EJB,尝试过Hibernate.所有这些方法都有其优点和缺点.但在所有这些中,我认为Spring JDBC为数据库操作提供了最简单的紧凑解决方案. (3认同)

mp3*_*415 8

对接受的答案进行微小的修正.据我所知,至少还需要一个罐子.它恰好在访问数据访问异常层次结构时发挥作用(底层数据库驱动程序抛出异常并将其包装到Spring异常中).jar是spring-asm(字节码操作).当我在SQL查询中出现问题并且堆栈跟踪显示类似MissingClassException时,我意外地发现了它.(我更愿意只是为答案添加评论,但看起来我还没有资格).


Wel*_*uza 6

还有另一种非常接近的替代方法,您可以使用仅具有和依赖项JdbcTemplate的库。请参阅下面来自他们网站的简单示例。此外,作为奖励,您仍然可以获得更好的性能,正如您在此基准测试中看到的那样(披露:我不是项目成员,我只是在项目中使用它)。sql2oslf4jguavasql2o

public class Task{
    private int id;
    private String category;
    private Date dueDate;
    // getters and setters here
}
Run Code Online (Sandbox Code Playgroud)
Sql2o sql2o = new Sql2o(DB_URL, USER, PASS);

String sql =
    "SELECT id, category, duedate " +
    "FROM tasks " +
    "WHERE category = :category";

try(Connection con = sql2o.open()) {
    List<Task> tasks = con.createQuery(sql)
        .addParameter("category", "foo")
        .executeAndFetch(Task.class);
}
Run Code Online (Sandbox Code Playgroud)