【问题标题】:Lightweight JDBC helper library alternative to Apache Commons DbUtils [closed]替代 Apache Commons DbUtils 的轻量级 JDBC 帮助程序库 [关闭]
【发布时间】:2011-10-31 13:30:46
【问题描述】:

我刚刚开发了自己的小型 JDBC 帮助程序库,我已经意识到这将是一场维护噩梦。

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

根据您的经验,您能推荐一个不错的 JDBC 帮助库吗?

到目前为止,我已经查看了Apache Commons DbUtils,这似乎很不错。还有什么想法吗?

【问题讨论】:

    标签: java jdbc apache-commons helper


    【解决方案1】:

    以下是与简单 JDBC 交互时“减轻痛苦”的工具列表:

    【讨论】:

    • JDBC 真的很棒,我认为应该从 Spring Framwork 外部化它
    • @deFreitas:为什么?这只是一节课,你可以在 10-20 分钟内自己写出来......
    • 因为我不认为以良好的代码质量重写 JDCTemplate 和 PlatformTransactionManager 只需 20 分钟,因为我不明白为什么要重写有效的东西非常好,它由所有社区维护
    • 不确定你的意思。 JdbcTemplate 的本质只是 JDBC API 的语法糖。但是好吧,如果你不想自己动手,只需从 Spring 复制粘贴一个。它是 ASL 2.0 许可的,因此您可以随意使用它,消除对 Spring 的依赖。但无论如何,你可能还有别的意思。
    • @sajjadG 前两个是按字母顺序排列的。其余的都是随机的。
    【解决方案2】:

    还有ORMLiteMyBatis,它们也很轻量级。使用 spring 和它的 rowmappers 非常简单,但确实需要您直接处理 JDBC。上述任何一种方法都会对您隐藏很多内容,同时不会像 hibernate 那样过于复杂。

    【讨论】:

      【解决方案3】:

      https://code.google.com/p/jdbc-helper/

      这是我从其项目页面复制的描述: 受 Spring Jdbctemplate 和 Commons Dbutils 项目的启发,JdbcHelper 是一个非常小的库,用于帮助开发人员编写常见的 jdbc 操作。 JdbcHelper 非常轻量级。它只有大约 70K,并且没有外部依赖项。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我只需要看到“BooksDAO.selectAllBooks()”就知道这不能正常工作。它实际上是我 6 年前建造的,并且犯了我所做的所有错误。它应该是“new BooksDAO(transaction).selectAllBooks()”。事务分界和上下文不能与查询纠缠在一起,也不应该通过静态方式处理,否则会影响可测试性和可调试性。
        • “...这不能很好地工作”是一个非常不公平的说法。如果您不需要在每个事务中执行多个语句,它实际上工作得很好。 Yank 从未声称支持多语句交易。
        • 我看过 Yank 源代码,我认为这不是一个好习惯。我写了一个简单的 DbUtils 帮助。 a123159521.iteye.com/blog/2200647
        • @herrtim 我不认为这种说法是不公平的。即使您不想在事务中支持多个语句,静态附着也会杀死您。如果没有将 BooksDAO 静态绑定到数据库和具体实现,您将无法编写任何依赖于 BooksDAO 的代码。我支持SomeDAO.someStaticMethod() == 不好的做法。 someDAOImplementation.someInstanceMethod() 非常出色。
        • 不要在 Yank 上浪费时间,这很痛苦……您将花费数小时处理无法追踪的错误。最后,此驱动程序无法执行更新,并且在翻译 SQL 文本命令时存在严重问题。
        【解决方案5】:

        Spring Framework (spring-dao) 是你的朋友。如果你正确地编程你的接口,以后(如果有必要的话)你可以很容易地切换到像 Hibernate 这样更强大的东西。也不要低估 Hibernate:Native SQL 为您提供了完整的 SQL 功能,并且您仍然可以从对象映射中受益——除非您只需要执行像 select count(*) from ... 这样简单的查询,否则无论如何您都必须对其进行编程。

        【讨论】:

          【解决方案6】:
          猜你喜欢
          • 2011-04-16
          • 2010-09-22
          • 2023-01-06
          • 1970-01-01
          • 2011-07-17
          • 2010-10-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多