在 Grails 项目中,如果我将实体类放在/domain 文件夹中,Grails 会自动尝试使用 GORM/Hibernate 进行持久化。如果我坚持使用不同类型的存储,比如 Mongo、Reddis 等,我是否仍然可以将我的类放在域文件夹中并实现我自己的持久化逻辑?
我已禁用 hibernate
和 domain
在 BuildConfig.groovy
使用 excludes 'hibernate,domain'
,但 Grails 仍然提示......也许我应该将我的域类放在 src/groovy/mypackage
中...
最佳答案
Grails 稍微误用了域这个术语。 Grails 中的域类是持久类,无论它们是使用 Hibernate 还是 NoSQL 或两者都是持久的。如果你想自己管理东西,把它们放在 src/groovy 中。
如果您想使用 NoSQL,请考虑使用其中一个插件,例如mongodb 或 redis-gorm。如果 NoSQL 插件是唯一安装的持久性插件(即您已经删除了 Hibernate 插件),那么 grails-app/domain 中的域类将使用该插件。如果您仍然安装了 Hibernate 插件,域类将默认为 Hibernate 域类,但您可以使用 mapWith
指定它是 NoSQL 域类。属性(property),例如static mapWith = "mongo"
.这在插件的文档中有所描述。
不过,您可能不想删除域插件 - 我认为没有任何好处,而且很可能会破坏重要功能。
关于hibernate - 在没有 Hibernate 或 GORM 的情况下使用 Grails 域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050075/