Apache JDBC实用程序与SpringJDBC模板。哪个更好?

时间:2019-03-17 02:51:29

标签: java spring jdbctemplate apache-commons-dbutils

我正在辩论自己是否在项目中使用jdbcTemplate和apache DBUtils。我的应用程序是一个spring应用程序,我们在其中使用jdbcTemplate处理少量请求。但是我在考虑这种非常轻巧且易于理解的Apache DbUtils。

我知道jdbcTemplate和dbutils都是常规JDBC之上的抽象层,这有助于我们避免使用肉鸡代码。

所以我的问题是:

1)我有什么强烈的理由要说服自己将所有内容从jdbcTemplate迁移到dbutils?

2)在jdbcTemplate中有任何自动POJO映射器可以自动映射到Java POJO类吗?在DbUtils中,我知道我们可以像下面这样:

ResultSetHandler<List<Object>> beanListHandler = new BeanListHandler<Object>(Object.class, new BasicRowProcessor(new GenerousBeanProcessor()));

在jdbcTemplate中,我知道我们可以有一个自定义的rowMapper,可以在其中显式设置如下所示的属性,但是有没有办法像dbutils中那样自动映射到POJOS?

@Overides

public Object mapRow(){
     //set to Object by calling setters
}

3)在性能方面,使用dbutils会有所不同吗?(因为我们已经在其他请求中使用了jdbcTemplate)

有人能建议从这两个中选出最好的一个,为什么从您的经验中选出来?

1 个答案:

答案 0 :(得分:1)

如果您的应用程序使用的是Spring框架,则应坚持使用JdbcTemplate。与Spring框架协同工作可带来许多好处,其中一些关键优点是

  • 容器管理的生命周期
  • 与Spring倡导的DAO设计模式完美融合
  • Spring的交易管理

请不要忘记,如果您在任何时候都遇到困难并试图寻找指点,那么互联网上可以使用大量材料进行这种组合。

您可以做的是减少围绕数据提取(从ResultSet)和创建POJO的样板,是编写RowMapper(或ResultSetExtractor)的一些通用实现。该实现应探查ResultsetMetadata以确定列名和返回记录的类型,并在“ Reflection on Class”(RowMapper应返回其对象)上将它们与字段或设置器进行匹配,实例化,填充并返回对象。