gpt4 book ai didi

grails - Active Record和GORM休眠

转载 作者:行者123 更新时间:2023-12-02 15:05:56 26 4
gpt4 key购买 nike

来自Ruby on Rails的背景我习惯了Active Record和运行迁移(几乎需要更改数据库的所有操作)。我知道Grails是不同的,但是Hibernate到底适合什么呢?

这就是我的看法

Activity 记录(用于RoR的ORM)= GORM (用于Grails的ORM)

Hibernate适合哪里? Rails在没有休眠的情况下与数据库对话,为什么Grails需要休眠?

是否可以在没有休眠的情况下使用Grails?

谢谢

最佳答案

Where does Hibernate fit in ? Rails talks to the database withoutHibernate and why does Grails need hibernate?


简单来说,这类似于说“Grails在没有ActiveRecord的情况下与数据库对话,所以Rails为什么需要ActiveRecord” :)
ActiveRecord和Hibernate恰好分别是RoR和Grails的“模型”层的数据库访问的默认实现。
实际上,对于Grails,在上述句子中用“GORM”替换“Hibernate”更为正确。就像正确提到的OP一样,它们在两个框架中都扮演了“ORM组件”的角色。 @Sudhir和@Joshua在其答案中已经涵盖了GORM在比典型ORM更高的抽象级别上定义的观点。但是,在所有 可能的实现中,默认情况下是Hibernate。因此假设“这是唯一的方法”并不罕见。
(作为附带说明,GORM可能不再是它的缩写,这里R = Relational,因为今天有许多非关系实现。现在是时候成为一个词:“Gorm”了,该是时候了!像 "Ajax" is no longer the acronym it used to be :)还是“Grails Data Mapping”的新缩写GDM –项目的Github名称?)
所以最后一个问题的简短答案...

is it possible to use Grails without Hibernate?


…是是的”。
但是,如果您问“在不使用Hibernate的情况下使用Grails是 明智的吗?”,答案将是:“这取决于……但出于实际目的,否!”
如果您使用的是非关系型数据存储,那就很容易了。您没有太多选择。每个非关系数据存储最多具有1个GORM实现。实际上,您甚至可能被迫根本不使用GORM(取决于实现是否足够好,甚至存在!)。顺便说一句,是的,Grails也可以在没有GORM的情况下使用!是否值得,是针对特定项目的决定。
但是,如果您使用的是 关系型数据库,但仍然不想使用Hibernate,则可以使用 gorm-jpa插件使用GORM的JPA实现。但是自2012年以来,它似乎并没有取得里程碑式的进展。而且,我从未使用过它来评论它是否完美(或至少与Hibernate一样好)。
或者,如果由于某种原因您发现 Active Record pattern(RoR的默认实现)比 Data Mapper pattern(这是Hibernate遵循的)更适合您的应用程序,那么您可能会使用 JavaLiteActiveJPA甚至是Spring JDBC模板(由@提及) Vivek,但是您必须首先使用它实现ActiveRecord模式),然后要么单独使用它(在GORM外部),要么甚至使用其中之一来实现自己的ActiveRecord模式的GORM实现。谁知道,这可能会使其他Rails开发人员更容易选择Grails :)
tl; dr
换句话说,将Grails与关系数据库一起使用的最安全,最快的方法是使用GORM的Hibernate实现。
注意
对于迁移,Liquibase是一个很好的工具。甚至还有一个 Grails plugin

关于grails - Active Record和GORM休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com