0

我在争论自己是否在我的项目中使用 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)

任何人都可以建议从这两个中选择最好的,为什么根据您的经验?

4

1 回答 1

1

If your application is using Spring framework then you should stick to using JdbcTemplate. Working in tandem with Spring framework it offers many benefits, some of the key ones are

  • Container managed lifecycle
  • Goes well with Spring advocated DAO design pattern
  • Spring's transaction management

and not to forget, plenty of material is available on internet for this combination, should you get stuck at any point and try to look for pointers.

What you can do to reduce boiler plate around data extraction (from ResultSet) and creating POJOs though, is, write some generic implementations of RowMapper (or ResultSetExtractor). The implementation should probe the ResultsetMetadata to determine column names and types of returned records and with a bit of Reflection on Class (object of which RowMapper should return) match them to fields or setters, instantiate, fill and return the object.

于 2019-03-17T03:19:35.153 回答