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
Java JPA/Hibernate:当ORM(Hibernate)没有';你不能把所有的JPA映射都正确吗?_Java_Hibernate_Orm_Jpa_Mapping - Fatal编程技术网

Java JPA/Hibernate:当ORM(Hibernate)没有';你不能把所有的JPA映射都正确吗?

Java JPA/Hibernate:当ORM(Hibernate)没有';你不能把所有的JPA映射都正确吗?,java,hibernate,orm,jpa,mapping,Java,Hibernate,Orm,Jpa,Mapping,在过去的几个月/几周里,我在Hibernate和JPA映射方面做了很多工作。我的数据库使用复合主键,我报告了大约10到15个Hibernate和5到10个EclipseLink错误。Hibernate在某些本该工作的星座中尤其可笑。(我让专家和JPA书籍作者检查了代码) 最大的问题是: 当ORM没有得到所有JPA映射时,它有什么用 Hibernate提供了很多东西,比如缓存等等。我想知道,当开发人员甚至无法通过创建一个工作元数据模型时,谁会在乎呢。。。这一切都毫无意义。同样,当ORM没有得到所有

在过去的几个月/几周里,我在Hibernate和JPA映射方面做了很多工作。我的数据库使用复合主键,我报告了大约10到15个Hibernate和5到10个EclipseLink错误。Hibernate在某些本该工作的星座中尤其可笑。(我让专家和JPA书籍作者检查了代码)

最大的问题是:

当ORM没有得到所有JPA映射时,它有什么用


Hibernate提供了很多东西,比如缓存等等。我想知道,当开发人员甚至无法通过创建一个工作元数据模型时,谁会在乎呢。。。这一切都毫无意义。同样,当ORM没有得到所有JPA映射时,它有什么用呢?

ORM是一个工具。仔细思考那句话

人们通常认为,如果一项技术(在本例中为Hibernate)在特定领域足够流行,那么它就是银弹,你必须使用它,否则你就是一个失败者

这显然是完全错误的。Hibernate是一个应该适当使用的工具

Hibernate的作者说Hibernate最适合新项目,在新项目中,映射是用xml或注释定义的,然后Hibernate为数据库生成DLL并创建所有表和关系

反过来可能非常棘手,尤其是当您有非规范化的表和复合主键时

这就是为什么Hibernate强烈鼓励使用自动递增的主代理键


做正确的JPA反向映射是一个挑战,因为在野外有许多角落的情况等待着你,所以你报告所有这些bug以便修复它们是正确的。再加上一些持久性,我相信您将能够完美地完成映射,之后的一切都将变得更加容易,因为第一部分总是最难的。

ORM是一种工具。仔细思考那句话

人们通常认为,如果一项技术(在本例中为Hibernate)在特定领域足够流行,那么它就是银弹,你必须使用它,否则你就是一个失败者

这显然是完全错误的。Hibernate是一个应该适当使用的工具

Hibernate的作者说Hibernate最适合新项目,在新项目中,映射是用xml或注释定义的,然后Hibernate为数据库生成DLL并创建所有表和关系

反过来可能非常棘手,尤其是当您有非规范化的表和复合主键时

这就是为什么Hibernate强烈鼓励使用自动递增的主代理键


做正确的JPA反向映射是一个挑战,因为在野外有许多角落的情况等待着你,所以你报告所有这些bug以便修复它们是正确的。有了更多的持久性,我相信您将能够完美地完成映射,之后的一切都将变得更加容易,因为第一部分总是最难的。

无论我在JPA方面遇到什么问题,我都会为所有实现创建一个测试用例,并比较ORM的行为及其社区的反应。Hibernate是迄今为止最糟糕的——他们的JPA bug甚至没有被发现。OpenJPA在功能方面有点落后于EclipseLink,但它看起来很稳定。EclipseLink有一些bug,这些bug仍然需要一些时间,但是有一些活动和频繁的升级。我在邮件列表中的问题都得到了Oracle人员的专业回答。目前看来,EclipseLink是赢家。我使用复合主键没有问题——没有它们,我仍然需要二级唯一索引。能够通过复合键查找实体是非常有用的,所以代理键解决方案似乎是我的一个借口。在EclipseLink中,甚至可以使用enum作为主键,这对于控制系统行为的众多小查找表非常有用。请参见

无论我对JPA有什么问题,我都会为所有实现创建一个测试用例,并比较ORM的行为及其社区的反应。Hibernate是迄今为止最糟糕的——他们的JPA bug甚至没有被发现。OpenJPA在功能方面有点落后于EclipseLink,但它看起来很稳定。EclipseLink有一些bug,这些bug仍然需要一些时间,但是有一些活动和频繁的升级。我在邮件列表中的问题都得到了Oracle人员的专业回答。目前看来,EclipseLink是赢家。我使用复合主键没有问题——没有它们,我仍然需要二级唯一索引。能够通过复合键查找实体是非常有用的,所以代理键解决方案似乎是我的一个借口。在EclipseLink中,甚至可以使用enum作为主键,这对于控制系统行为的众多小查找表非常有用。请参见

我在多个项目中使用hibernate已有4年了,没有任何重大问题。所以问题应该是你;)由于我对4种可能的组合主键变体JPA1.0@IdClass、JPA1.0@EmbeddedId、JPA2.0@IdClass和JPA2.0@EmbeddedId与Hibernate和EclipseLink进行了广泛的测试,问题显然是Hibernate对组合键的处理不好。您要么不使用复合主键,要么使用JPA1.0@IdClass实现。这些是唯一在冬眠状态下稳定的(3.6)。这是火饵。在我看来,除了“是的,你是对的!任何没有实现完整JPA2规范的ORM都是无用的”之外,你似乎不愿意接受任何其他答案。在我看来,你只是想发泄一下你对Hibernate的不满,想让别人放心。所以这不是进行这种交流的合适场所。是的,我想让别人放心。其他类似日食的风暴