【发布时间】:2011-05-19 02:33:23
【问题描述】:
在过去的几个月/几周里,我玩了很多 Hibernate 和 JPA 映射。我的数据库使用复合主键,我报告了大约 10 到 15 个 Hibernate 和 5-10 个 EclipseLink 错误。在某些应该工作的星座中,休眠尤其可笑。 (我让专家和 JPA 书籍作者检查了代码)
最大的问题是:
如果 ORM 不能正确获得 所有 JPA 映射,它还有什么用处?
Hibernate 有很多东西可以提供,缓存等等。我想知道当开发人员甚至无法通过创建一个工作元数据模型时谁在乎......这一切都毫无意义。再说一遍,当 ORM 不能获得 所有 JPA 映射时,它还有什么用处?
【问题讨论】:
-
我已经在多个项目中使用了 4 年的 hibernate,并且没有遇到任何重大问题。所以问题应该是你;)
-
当我使用 Hibernate 和 EclipseLink 对 4 种可能的复合主键变体 JPA 1.0 @IdClass、JPA 1.0 @EmbeddedId、JPA 2.0 @IdClass 和 JPA 2.0 @EmbeddedId 进行了广泛的测试时,问题出在肯定是 Hibernate 糟糕地处理复合键。您要么不使用复合主键,要么使用 JPA 1.0 @IdClass 实现。这些是 Hibernate (3.6) 中唯一稳定的。
-
这是诱饵。在我看来,除了“是的,你是对的!任何不实现完整 JPA 2 规范的 ORM 都是无用的”,我似乎没有对任何其他答案持开放态度。在我看来,您只是想发泄对 Hibernate 的不满,并希望得到其他人的安慰。 SO 不适合进行这种交流。
-
是的,我想让别人放心。像 EclipseLink 这样的其他 ORM 也有仍然让我摸不着头脑的错误。它不仅与 Hibernate 有关,而且与所有 JPA ORM 有关。在映射方面,Hibernate 是迄今为止最容易出错的一个。当 JPA 提供者不明白没有所有 JPA 映射工作的新手最终会认为 JPA 和 ORM 是无用的技术时,软件的其余部分将变得无用。我的任务是改进 JPA 的实现。
-
我很难找出 Hibernate 和 EclipseLink 的问题所在。我意识到它们在某种程度上都是错误的/不完整的,我开始想知道这样的软件有什么用。让 4 个复合主键变体中的 1 个起作用并不令人满意,它们全部都必须起作用。
标签: java hibernate orm jpa mapping