我们在web应用程序中使用JDBC已经很长时间了。我们使用它的主要原因是,我们有100%的控制代码,sql和修复的事情由我们的手。除此之外,我们在数据库中使用触发器,数据库由DB专家单独开发。
然而,现在很多人建议使用Hibernate,所以我们也考虑使用它。但是,我们发现了以下问题。
foreign keys、Primary Keys、Composite Keys、Unique Keys等。在论坛上,一些人抱怨Hibernate弄乱了这些。JDBC!”考虑到这些,请让我知道上面的观点是否真实(就像我说的,我是通过谷歌、讨论等方式了解到的)。另外,Hibernate和JDBC的优缺点是什么?
发布于 2015-01-27 05:32:38
回答上述问题:
1. Hibernate无法与“现有”数据库连接。它总是试图创造一个属于自己的。
这是错误的。Hibernate 可以连接到现有的数据库,而且它并不总是尝试重新创建它。您只需要像hbm2ddl. auto这样的参数。
2.我们的数据库可以通过不同平台(云、服务器、VPS、个人计算机)的同一应用程序进行访问。Hibernate会因为在这种情况下的缓存而造成问题。
Hibernate有一个可调整的缓存,所以这也不是问题。
3.我们从来不喜欢将“表创建工作”交给java代码。我们总是手动创建表。
没问题。见上文第1页。此外,还有一些用于间接表创建和更新的简化库(如液基),这些库可以与hibernate完美地结合使用。
4.我们可能需要使用非常长而复杂的SQL语句。上一次我们使用的语句超过150行,连接了20多个表。当涉及到冬眠时,我们怀疑我们是否会在这方面遇到麻烦。
如果需要,始终可以直接使用JDBC调用,并通过hibernate调用原生SQL查询。
5.我们的SQL代码是好的和标准的。Hibernate生成的代码对我们来说似乎有点脏。
同样,如果您必须调用一些逻辑复杂的SQL代码,而不是hibernate自动生成的,那么您可以这样做。
6.我们总是使用MySQL。永远不要使用任何其他DB。
一点问题都没有。Hibernate有特殊的MySQL方言支持:org.hibernate.dialect.MySQLDialect。
7.我们创建的应用程序需要最大限度的安全性,与医疗相关。如果至少有一条数据记录被泄露,我们就完了。
安全问题与ORM技术无关。Hibernate只是纯数据库JDBC调用和程序员工具之间的逻辑和方便的面向对象层。它不会以某种方式影响普通的网络安全。
发布于 2015-01-27 09:28:52
Hibernate是一个很好的工具,您可以找到大量关于它的文档、书籍和博客文章。
我将谈谈你的所有关切:
Hibernate无法与“现有”数据库连接。它总是试图创造自己的一个。
Hibernate应该使用单独的数据库模式管理过程,甚至用于集成测试。您应该使用增量版本控制工具(如FlywayDB )来管理模式更改。
我们的数据库可以通过不同平台(云、服务器、VPS、个人计算机)中的同一个应用程序访问。Hibernate会因为在这种情况下的缓存而造成问题。
您不必使用第二级缓存,后者使用第三方缓存实现。所有缓存解决方案都可能破坏事务一致性。第一级缓存保证会话级的可重复读取,并且在保持乐观锁定的情况下,您可以防止丢失的更新。
我们从来不喜欢将“表创建工作”交给java代码。我们总是手动创建表。
数据库应该与您的ORM工具分开。不管怎么说,这是最好的做法。
我们可能需要使用非常长和复杂的SQL语句。上一次我们使用的语句超过150行,连接了20多个表。当涉及到冬眠时,我们怀疑我们是否会在这方面遇到麻烦。
Hibernate对于写操作和并发控制非常有用。对于高级查询(窗口函数,CTE),仍然需要使用本机SQL。但是Hibernate允许您运行本机查询。
我们的SQL代码是好的和标准的。Hibernate生成的代码对我们来说似乎有点脏。
您不需要也不应该使用hbmdll实用程序。
我们总是使用MySQL。永远不要使用任何其他DB。
那就更好了因此,您可以在不考虑数据库可移植性问题的情况下使用预先的本机查询。
我们创建的应用程序需要最大限度的安全性,与医疗相关。如果至少有一条数据记录被泄露,我们就完了。
Hibernate并不会阻止您保护数据库或数据访问代码。您还可以在Hibernate中使用数据库安全措施。您甚至可以使用碧玉来启用各种与安全相关的特性:
数据库中有大量的外键、主键、复合键、唯一键等。在论坛上,一些人抱怨Hibernate弄乱了这些。
所有这些都由Hibernate支持。除了JPA约定之外,Hibernate还为任何外来映射提供了特定映射。
我们决定尝试hibernate,因为有些人声称,“您是软件工程师吗?您正在使用已经死掉的JDBC!”
这不是从你已经掌握的库中切换的正确论据。如果您认为可以从使用Hibernate中获益,那么这是从JDBC切换的唯一令人信服的原因。
发布于 2015-01-27 05:40:23
使用普通的旧JDBC并不意味着您缺少IT行业,相反Hibernate也在底层使用JDBC。
它给我们带来了什么优势,我们应该寻找什么。
(1) Cache机制。
2.)管理sessions,transactions等。
3.)减少编写查询的工作量,减少hibernate的更多实用程序,如Query API、Criteria API、HQL
您提出的问题或多或少都包含在Hibernate文档中。
还有更多的缓存策略可用的ehcache,无限,取决于我们正在部署的服务器,JBOSS,Weblogic,Tomcat等++环境,如云、分布式缓存等。
Hibernate仍然为您提供了关闭自动创建模式和指向您创建的模式的选项。
https://stackoverflow.com/questions/28163670
复制相似问题