Java Apache Commons DbUtils的轻量级JDBC帮助程序库替代品

Java Apache Commons DbUtils的轻量级JDBC帮助程序库替代品,java,jdbc,apache-commons,helper,Java,Jdbc,Apache Commons,Helper,我刚刚开发了自己的小型JDBC助手库,我已经意识到这将是一场多么可怕的维护噩梦 我不是在寻找一个成熟的ORM,比如Hibernate,它只是一个轻巧而有用的东西,可以快速地使JDBC调用传递SQL语句,而不会弄乱已检查的异常,手动关闭资源,等等 根据您的经验,您能推荐一个好的JDBC助手库吗 到目前为止,我已经看了一眼,它看起来相当不错。还有其他想法吗?(春刀)是你的朋友。如果您正确地编程了接口,以后(如果有必要的话)您可以很容易地切换到更强大的东西,比如Hibernate。另外,不要低估Hib

我刚刚开发了自己的小型JDBC助手库,我已经意识到这将是一场多么可怕的维护噩梦

我不是在寻找一个成熟的ORM,比如Hibernate,它只是一个轻巧而有用的东西,可以快速地使JDBC调用传递SQL语句,而不会弄乱已检查的异常,手动关闭资源,等等

根据您的经验,您能推荐一个好的JDBC助手库吗


到目前为止,我已经看了一眼,它看起来相当不错。还有其他想法吗?

(春刀)是你的朋友。如果您正确地编程了接口,以后(如果有必要的话)您可以很容易地切换到更强大的东西,比如Hibernate。另外,不要低估Hibernate:它提供了完整SQL的强大功能,但您仍然可以从对象映射中获益——这是您无论如何都必须编程的东西,除非您只需要执行查询,就像从…

中选择count(*)一样简单。在不需要ORM的情况下,我使用springs

例子

还有一些非常轻的。使用spring及其RowMapper非常简单,但确实需要您直接处理JDBC。类似于上述任何一种方法都会对您隐藏很多内容,但不会像hibernate那样过于复杂。

有,这是一个超轻的JDBC持久层,它封装了DBUtils。要使用它,您需要为每个表创建一个POJO和一个DAO类。您可以编写自己的SQL语句,并通过DBProxy类执行查询。您不必处理连接、结果集或其他低级JDBC代码。从2.0.0版开始,Yank jar只有13KB,它只依赖于SLF4J、DBUtils和第三方数据库jar,无论您使用哪种数据库技术。

以下是我从其项目页面复制的描述:
受SpringJDBCTemplate和CommonsDBUTILS项目的启发,JdbcHelper是一个非常小的库,用于帮助开发人员编写常见jdbc操作的代码。JdbcHelper非常轻量级。它只有~70K,并且没有外部依赖项。

这里列出了一个与简单JDBC交互时“减轻痛苦”的工具列表:

  • 春天的
  • (也可以与SQL字符串一起使用-免责声明:我为供应商工作)
  • (你提到过你自己)

我所看到的只是“BooksDAO.selectAllBooks()”,我知道这不能很好地工作。这实际上是我6年前建造的,我犯了所有的错误。它应该是“new BooksDAO(transaction).selectAllBooks()。事务划分和上下文不能与查询纠缠在一起,也不应该通过静态方式处理,否则可测试性和可调试性将受到影响。”…这不能很好地工作”是一个相当不公平的说法。如果您不需要在每个事务中执行多个语句,那么它实际上工作得非常好。Yank从不声称支持多语句事务。我看过Yank的源代码,我认为这不是一个好的实践。我已经写了一个简单的DbUtils帮助@herrtim我不认为这种说法是不公平的。即使您不想在一个事务中支持多个语句,静态挂起也会使您丧命。如果不将BooksDAO静态绑定到数据库和具体实现,就无法编写任何依赖于BooksDAO的代码。我支持
SomeDAO.someStaticMethod()
==坏习惯
someDAOImplementation.someInstanceMethod()
非常出色。不要在Yank身上浪费时间,这是一种痛苦。。。您将花费数小时处理无法追踪的错误。最后,这个驱动程序无法执行更新,并且在翻译SQL文本命令时遇到严重问题。JDBC真是太棒了,我认为应该从Spring开始将其外部化Framwork@deFreitas:为什么?这只是一个单独的类,你可以在10-20分钟内自己编写……因为我不认为用良好的代码质量和所有It核心功能重新编写JDCTemplate和PlatformTransactionManager只需要20分钟,因为我不明白为什么要重新编写一些工作非常好并且由所有社区维护的东西不确定你是什么意思。JdbcTemplate的本质就是语法优于JDBCAPI。但好吧,如果你不想自己滚,只需复制粘贴Spring中的一个。它是ASL2.0许可的,因此您可以随意使用它,消除对Spring的依赖。但不管怎样,你可能是指别的东西。@sajjadG前两个是按字母顺序排列的。其余的都是随机的。