【问题标题】:Do grails domain classes have to be tied to a database?grails 域类是否必须绑定到数据库?
【发布时间】:2010-08-16 01:52:37
【问题描述】:

在 grails 方面我是一个完全的菜鸟(在 groovy 方面仍然很菜鸟),所以如果这是一个愚蠢的问题,我深表歉意。

我正在构建一个简单的 Web 应用程序,我想根据文件系统对象(即目录结构和文件类型)而不是数据库数据来控制我的应用程序中的域部分。这样做有多容易,或者域对象与 GORM 如此纠缠,以至于不值得尝试?

【问题讨论】:

  • 不是一个答案,但您可能有兴趣听到持久性实现正在从 GORM 中抽象出来。这将允许 GORM 与 Redis、Neo4j 等等 noSQL 实现以及 JCR 存储库等其他实现一起工作。也应该可以添加一个基本的文件系统实现。请留意 Grails 公告。

标签: grails groovy grails-domain-class


【解决方案1】:

几周前我自己也遇到过这个问题。

您只需将以下 sn-p 添加到 Domain Class

def isAttached() 
{
   return false
}

现在它没有连接到您的数据库。瞧!

【讨论】:

  • 当我询问更高版本的 grails 时,似乎没有答案。
【解决方案2】:

你也可以使用:

class YourDomainClass {

    static mapWith = "none" // disable persistence for this domain class

grails documentationthis answer。似乎已在 Grails 2.0.1 中添加,但直到版本 2.3.0 才记录。

【讨论】:

    【解决方案3】:

    正如您所描述的,没有将域类映射到文件系统对象的内置方法,但同样没有要求您的域类映射到关系数据库。解决了如何创建不使用关系数据库的 Grails 应用程序的主题 herehere(可能还有其他地方)。

    【讨论】:

      【解决方案4】:

      有几种方法可以做到这一点。

      首先,您可以将映射到文件系统数据的属性声明为瞬态,并在调用 getter / setter 时转到文件系统(您必须覆盖它们)。如果您需要它们始终在内存中,您也可以使用 onLoad 加载它们。

      第二 - Hibernate 处理持久性。 Hibernate 允许您定义自己的用户类型,它可以以任何您想要的方式处理持久性。这样,它可能会更透明地发生在你身上(尽管你必须确保你对 hibernate 理解得相当好,以确保没有任何副作用,我不确定)。

      http://i-proving.com/space/Technologies/Hibernate/User+Types+in+Hibernate

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        • 2011-09-27
        • 2013-03-04
        • 1970-01-01
        相关资源
        最近更新 更多