我有一个Grails应用程序,它从xml文件加载数据,并通过rome提供rss订阅。 我没有任何领域类,我的应用程序也没有数据源。 当应用程序不需要时,我不希望Grails加载内存中的hsql数据库。 删除DataSource.groovy文件会导致无法启动Web应用程序,似乎需要数据源,但是如果我的应用程序不需要数据源,我能做些什么呢?
我有一个Grails应用程序,它从xml文件加载数据,并通过rome提供rss订阅。 我没有任何领域类,我的应用程序也没有数据源。 当应用程序不需要时,我不希望Grails加载内存中的hsql数据库。 删除DataSource.groovy文件会导致无法启动Web应用程序,似乎需要数据源,但是如果我的应用程序不需要数据源,我能做些什么呢?
grails create-app nodb
cd nodb
grails uninstall-plugin hibernate
rm grails-app/conf/DataSource.groovy
grails create-controller Foo
<add "render "hi bar" to the index closure of ./grails-app/controllers/FooController.groovy>
grails run-app
http://localhost:8080/nodb/foo - prints hi bar
对于至少在1.1版本上存在的应用程序(我想那是当Hibernate成为插件时),您应该可以只卸载插件并删除DataSource.groovy文件。
我成功地将数据源注释掉,并让默认的Grails应用程序运行。请以与我在datasource.groovy中注释以下代码相同的方式注释您的生产部分。
/* development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
}*/
如果您不需要真正的数据库,那么内存数据库非常轻巧,建议您使用它。
这是一篇好的指南:http://digitalbreed.com/2011/using-grails-without-a-database
移除Grails的Hibernate插件。
显式声明服务为非事务性的。默认值为true,类方法将被代理,但没有Hibernate插件就没有事务管理器,部署会失败。
class SomeService { static transactional = false // ... }
使用命令对象而不是领域对象, 特别是如果需要验证。