在两个类(hasOne/hasMany和belongsTo)中指定关系的用途是什么?让我们举个例子
class User {
Profile profile
}
class Profile {
String name
String age
String location
} 在本例中,User有一个Profile。那么如何指定hasOne和belongsTo关系,为什么呢?
指定关系类型的用途是什么?我们可以只使用对象,而不是在User中指定hasOne。
发布于 2011-08-14 22:21:06
您可以使用这两种方法之一。hasOne和belongsTo属性定义了类之间的关系,还添加了删除、保存和更新时的级联。如果您决定不使用这些属性,则必须实现您自己的级联效果。
在开发大型应用程序时,不使用这些属性和映射关系是有好处的,因为它们会导致性能开销。这在Burt Beckwiths blog中有解释
发布于 2011-08-14 22:22:21
使用hasOne和belongsTo可以控制GORM处理关系的方式。根据latest Grails documentation on GORM modeling,以下情况是正确的:
类User { Profile profile }将导致多对一关系。这意味着任意数量的客户端可以指向给定的配置文件。除此之外,没有任何关系会被强制执行。
如果给这个概要文件一个静态的belongsTo = client:Client,那么这个关系就变成了一个双向的多对一关系,这意味着一个客户机有一个概要文件,而这个概要文件属于这个特定的客户机。GORM现在将在保存、更新或删除客户端时管理配置文件的持久化(保存、更新和删除)。这还允许您通过GORM对概要文件进行查询,并将后向引用公开给客户端。
hasOne用于创建一对一关系。您应该将此应用于关系的拥有方(在您的示例中为客户端)。这将允许GORM在保存、更新或删除客户端时管理配置文件的持久性。
最后,hasMany允许您从拥有方(在您的示例中为client )定义一对多关系,其中一个客户端可能有多个Profile(愚蠢的,但我使用的是您的示例属性)。这再次告诉GORM,应该在保存、更新或删除客户端时处理持久性。关于这种类型的关系有一些陷阱,我强烈建议您阅读参考文档,以了解如何正确使用这种类型的关系的更多信息。
https://stackoverflow.com/questions/7055442
复制相似问题