我想知道在使用Hibernate框架时数据库有多重要。在比较例如Oracle和MySql时,独立数据库存在巨大差异,但是当数据库隐藏在Hibernate之后时,我看不出有很大差异。将Hibernate与更高级的数据库系统结合使用会带来什么好处?
感谢您的回答。
答案 0 :(得分:3)
Hibernate只是一种工具,可以使您与db的交互比简单的jdbc更容易。但是hibernate不会为它做db工作:它不能提高db性能或为它添加一些功能。所以数据库仍然是一个重要的选择。
答案 1 :(得分:3)
Hibernate或多或少是一种映射语言,它允许您在代码中调用Hibernate方法,并让Hibernate库将这些方法调用转换为适当的JDBC调用(或多或少)。
因此,只要Hibernate知道如何将其API调用转换为给定RDBMS的正确,高效的SQL,就无所谓了。如果RDBMS不断改变功能等,它的“成熟度”可能会成为一个问题 - 但只是在相应的Hibernate方言需要不断更新以处理特定版本的意义上。
在大多数情况下,如果你只是使用符合SQL标准的方面,你不应该看到Hibernate的问题,因为它应该能够处理最低公分母的东西。也就是说,如果你将这个RDBMS用于其“更高级”的功能,你可能会对Hibernate没有利用它们感到失望(取决于很酷的功能是否完全是内部的,比如一个非常高性能的查询优化器) ,或者是外部的,例如一些新的SQL命令。)
答案 2 :(得分:0)
除了RDBMS的内在函数之外,区别在于特定“方言”的能力将被用作结果。
答案 3 :(得分:0)
我可以肯定地说它非常重要。我不确定你是否会在MySQL和Oracle之间的应用程序级别上看到很多差异,但是如果你“关闭”DBMS列表并进入SQLite或H2这样的数据库,它们的内部工作会使很多差异取决于您存储的对象类型和您创建的访问模式 - 即使使用hibernate隐藏数据库怪癖。锁定机制,并发能力,它们如何处理事务,索引构建/利用/交互等等的细节将影响您的应用程序的运行情况 - 有时是显着的。例如,我们不得不将正在运行的系统上的千兆字节数据从H2迁移到MySQL,因为我们发现了一些限制 - 即使我们在任何地方使用hibernate。
显然,每个数据库都有自己的功能集,包括复制,分片,整体性能,成本,管理工具等,这些都必须加以考虑。