Apache JDBC Utilts 与 SpringJDBC 模板。哪个更好?
Posted
技术标签:
【中文标题】Apache JDBC Utilts 与 SpringJDBC 模板。哪个更好?【英文标题】:Apache JDBC Utilts vs SpringJDBC template. Which is is better? 【发布时间】:2019-08-07 18:18:21 【问题描述】:我一直在争论是否在我的项目中使用 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)
任何人都可以建议从这两个中选择最好的吗?为什么根据您的经验?
【问题讨论】:
JdbcTemplate 默认包含常规 POJO 映射;这是所有以Class
作为参数的签名的目的。
@chrylis 谢谢看看。对其他方面有什么建议吗?
Stack Overflow 旨在避免冗长或开放式的讨论。这个问题似乎朝着那个方向发展。要么将其重新构建为要解决的特定技术问题,要么将其移至姊妹站点 Software Recommendations Stack Exchange,您可以将问题重新构建为需求列表和您考虑的标准建议产品成功满足这些需求。要求将产品 X 与产品 Y 进行比较的问题在两个网站上都是题外话。所以第三个途径是一个讨论网站,比如JavaRanch.com
【参考方案1】:
如果您的应用程序使用 Spring 框架,那么您应该坚持使用 JdbcTemplate。与 Spring 框架协同工作,它提供了许多好处,其中一些关键是
容器管理的生命周期 非常适合 Spring 倡导的 DAO 设计模式 Spring 的事务管理别忘了,互联网上有很多关于这种组合的材料,如果您在任何时候遇到困难并尝试寻找指针。
您可以做些什么来减少围绕数据提取(从 ResultSet)和创建 POJO 的样板,但是,编写一些 RowMapper(或 ResultSetExtractor)的通用实现。实现应该探测ResultsetMetadata 以确定返回记录的列名和类型,并通过对Class(RowMapper 应该返回的对象)的一些反射将它们与字段或setter 匹配,实例化,填充并返回对象。
【讨论】:
以上是关于Apache JDBC Utilts 与 SpringJDBC 模板。哪个更好?的主要内容,如果未能解决你的问题,请参考以下文章
Apache Shiro 与 Spring Security
是否可以使用 spark 的 jdbc 驱动程序将 apache spark 与 jasper 集成?
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException MySQL + Apache Tomcat 7