Pea*_*Gen 31 java mysql hibernate jpa jdbc
我们在Web应用程序中使用JDBC已经很长时间了.我们使用它的主要原因是因为我们100%控制代码,sql和我们手中的东西.除此之外,我们在数据库中使用了触发器,数据库由数据库专家单独开发.
然而,许多人现在建议使用,Hibernate
所以我们也考虑使用它.但是,我们发现了以下问题.
Hibernate无法与"现有"数据库连接.它总是试图创造自己的一个.
我们的数据库可能由不同平台(云,服务器,VPS,个人计算机)中的同一应用程序访问.Hibernate可能会因为在这种情况下的缓存而产生问题.
我们从不喜欢将"表创建工作"赋予java代码.我们总是手动创建表.
我们可能必须使用非常长且复杂的SQL语句.上次我们使用超过150行的语句,加入了20多个表.我们怀疑在Hibernate方面是否会遇到麻烦.
我们的SQL代码很好,很标准.Hibernate生成的代码对我们来说似乎有点脏.
我们总是使用MySQL.切勿使用任何其他数据库.
我们创建的应用程序需要最高安全性,与医疗相关.如果泄漏了至少一个数据记录,我们就完成了.
有很多的foreign keys
,Primary Keys
,Composite Keys
,Unique Keys
数据库等等等等.在论坛中,一些人抱怨说Hibernate搞砸了.
我们决定尝试休眠,因为有些人声称,"你是软件工程师吗?你已经死了JDBC
!!"
考虑到这些,请让我知道以上几点是否真实(正如我所说,我通过谷歌搜索,讨论等了解它们)或不是.而且,Hibernate VS Java JDBC的优点和缺点是什么?
And*_*niy 30
回答上面列出的问题:
1. Hibernate无法连接"现有"数据库.它总是试图创造自己的一个.
这是错的.Hibernate 可以连接到现有数据库,并不总是尝试重新创建它.你应该像参数一样转hbm2ddl. auto
.
2.我们的数据库可能由位于不同平台(云,服务器,VPS,个人计算机)的同一应用程序访问.Hibernate可能会因为在这种情况下的缓存而产生问题.
Hibernate有一个可调缓存,所以这也不是问题.
3.我们从不喜欢将"表创建工作"赋予java代码.我们总是手动创建表.
没问题.见上文第1页.此外,还有几个方便的库用于间接表创建和更新(例如liquibase),可以完美地与hibernate结合使用.
我们可能不得不使用非常冗长和复杂的SQL语句.上次我们使用超过150行的语句,加入了20多个表.我们怀疑在Hibernate方面是否会遇到麻烦.
如果需要,您可以始终使用直接JDBC调用并通过hibernate调用本机SQL查询.
5.我们的SQL代码很好,很标准.Hibernate生成的代码对我们来说似乎有点脏.
同样,如果你必须调用一些逻辑复杂的SQL代码而不是自动生成的hibernate - 你可以这样做.
6.我们总是使用MySQL.切勿使用任何其他数据库.
根本不是问题.Hibernate有特殊的MySQL方言支持:org.hibernate.dialect.MySQLDialect
.
7.我们创建的应用程序需要最大的安全性,与医疗相关.如果泄漏了至少一个数据记录,我们就完成了.
安全问题与ORM技术无关.Hibernate
是纯数据库JDBC调用和程序员工具之间的逻辑和方便的面向对象层.它不会以某种方式影响常见的网络安全.
Vla*_*cea 18
Hibernate是一个很棒的工具,你会发现很多关于它的文档,书籍和博客文章.
我将解决您的所有问题:
Hibernate无法与"现有"数据库连接.它总是试图创造自己的一个.
即使是集成测试, Hibernate也应该使用单独的数据库模式管理过程.您应该使用像FlywayDB这样的增量版本控制工具来管理架构更改.
我们的数据库可能由不同平台(云,服务器,VPS,个人计算机)中的同一应用程序访问.Hibernate可能会因为在这种情况下的缓存而产生问题.
您不必使用第二级缓存,它使用第三方缓存实现.所有缓存解决方案都可能破坏事务一致性.第一级缓存保证会话级可重复读取,并且乐观锁定可以防止丢失更新.
我们从不喜欢将"表创建工作"赋予java代码.我们总是手动创建表.
应将数据库管理与ORM工具分开.无论如何,这是最好的做法.
我们可能必须使用非常长且复杂的SQL语句.上次我们使用超过150行的语句,加入了20多个表.我们怀疑在Hibernate方面是否会遇到麻烦.
Hibernate非常适合写操作和并发控制.您仍然需要使用本机SQL进行高级查询(窗口函数,CTE).但是Hibernate允许您运行本机查询.
我们的SQL代码很好,很标准.Hibernate生成的代码对我们来说似乎有点脏.
您不需要也不应该使用hbmdll实用程序.
我们总是使用MySQL.切勿使用任何其他数据库.
那甚至更好.因此,您可以使用高级本机查询,而无需担心数据库可移植性问题.
我们创建的应用程序需要最高安全性,与医疗相关.如果泄漏了至少一个数据记录,我们就完成了.
Hibernate不会阻止您保护数据库或数据访问代码.您仍然可以使用Hibernate的数据库安全措施.您甚至可以使用Jasypt启用各种与安全相关的功能:
数据库中有很多外键,主键,复合键,唯一键等.在论坛中,一些人抱怨说Hibernate搞砸了.
所有这些都得到了Hibernate的支持.除了JPA约定之外,Hibernate还为任何奇异的映射提供特定的映射.
我们决定尝试休眠,因为有些人声称,"你是软件工程师吗?你正在使用已经死的JDBC !!".
这不是从您已经掌握的库切换的正确论据.如果您认为可以从使用Hibernate中受益,那么这是从JDBC切换的唯一令人信服的理由.
归档时间: |
|
查看次数: |
36897 次 |
最近记录: |