Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate ORM框架与JDBC的优缺点_Hibernate_Jdbc - Fatal编程技术网

Hibernate ORM框架与JDBC的优缺点

Hibernate ORM框架与JDBC的优缺点,hibernate,jdbc,Hibernate,Jdbc,很长一段时间以来,我一直在我的单机和web应用程序中使用JDBC(Java数据库连接)。现在,我的前辈们要求我使用Hibernate框架,而不是JDBC,原因如下 通过使用JDBC,资源泄漏和数据不一致的情况如下 工作由开发人员完成 难以实现MVC概念 无封装 巨大的编程开销 查询是特定于DBMS的 这些因素是真的吗?还有其他因素支持这一点吗 为什么我们应该使用Hibernate而不是JDBC?请帮我说说你的想法 谢谢 通过使用JDBC,工作时会发生资源泄漏和数据不一致 由开发人员完成 错误

很长一段时间以来,我一直在我的单机和web应用程序中使用
JDBC
(Java数据库连接)。现在,我的前辈们要求我使用
Hibernate
框架,而不是
JDBC
,原因如下

  • 通过使用
    JDBC
    ,资源泄漏和数据不一致的情况如下 工作由开发人员完成

  • 难以实现MVC概念

  • 无封装

  • 巨大的编程开销

  • 查询是特定于DBMS的

这些因素是真的吗?还有其他因素支持这一点吗

为什么我们应该使用
Hibernate
而不是
JDBC
?请帮我说说你的想法

谢谢

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

错误。

  • 工作也由开发人员使用hibernate完成
  • 如果您的意思是由于手动
    连接
    /(
    准备
    语句
    /
    结果集
    处理的重复代码而导致资源泄漏,那么有很多JDBC模板框架可以为您做到这一点
  • 如果没有正确使用Hibernate,Hibernate也会出现数据不一致的情况。例如,您指示Hibernate从数据库中删除某些内容,但因为
    persist
    操作被级联到删除的实体。现在数据库中有一个不一致的状态
  • 难以实现MVC概念

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

    无封装

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

    巨大的编程开销

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

    查询是特定于DBMS的

    正确。尽管在HQL不适合作业的用例中使用本机查询没有错

    还有其他因素支持这一点吗

    关于这方面的其他问题:

    还有数百个关于这个主题的博客和论坛主题,你可以通过你喜欢的网络搜索引擎很快找到它们