Hibernate ORM框架与JDBC优缺点

时间:2016-03-12 07:34:02

标签: hibernate jdbc

我已经在我的独立和Web应用程序中使用JDBC(Java数据库连接)很长一段时间了。现在,我的前辈要求我使用Hibernate框架代替JDBC,原因如下。

  • 通过使用JDBC,资源泄漏和数据不一致发生 工作由开发人员完成。

  • 难以实施MVC概念

  • 无封装

  • 大量编程开销

  • 查询是特定于DBMS的

这些因素是否属实?还有其他因素可以支持吗?

为什么我们应该使用Hibernate代替JDBC?请帮我解决你的想法。

感谢。

1 个答案:

答案 0 :(得分:4)

  

通过使用JDBC,资源泄漏和数据不一致就像工作一样   由开发人员完成。

<强>假

  1. 工作由开发人员用hibernate完成。
  2. 如果您的意思是由于手动Connection /(PreparedStatement / ResultSet处理的重复代码而导致资源泄漏,那么有许多JDBC模板框架可供使用为你做这件事。
  3. 如果您没有正确使用Hibernate,也可能会发生数据不一致。例如,您指示Hibernate从数据库中删除某些内容,但it ignored it因为persist操作被级联到已删除的实体。现在你在db中有一个不一致的状态。
  4.   

    难以实施MVC概念

    部分正确。实体真的有助于更轻松地编写MVC的模型部分。

      

    无封装

    部分正确。实际上,映射信息只能在实体中指定,并且稍后会自动地(或多或少)透明地在涉及实体的所有用例中重复使用。

      

    大量编程开销

    绝对正确。基本上,ORM解决方案是一种框架,当应用程序中的持久层变得过于复杂时,您最迟可能会自行编写这些框架。根据我的经验,即使在中等大小的应用程序中,手动编写的持久性框架也是应用程序中最复杂的部分。

      

    查询是特定于DBMS的

    True。虽然在HQL不适合作业的情况下使用本机查询没有任何问题。

      

    还有其他因素可以支持吗?

    关于SO的其他问题:

    Pros and Cons of Hibernate

    Weaknesses of Hibernate

    Hibernate or JDBC

    JDBC VS Hibernate

    Use Hibernate or not?

    关于此主题还有数百个博客和论坛主题,您可以使用首选的网络搜索引擎快速找到它们。