我有一个Grails应用程序,它从xml文件加载数据并通过罗马提供rss提要。我没有任何域类,我的应用程序没有数据源。我不希望Grails在应用程序不需要时加载内存中的hsql db。删除DataSource.groovy文件阻止我启动Web应用程序,似乎需要数据源,但如果我的应用程序不需要数据源,我还能做些什么吗?
答案 0 :(得分:21)
以下步骤适用于不使用数据源的新应用程序(Grails 1.1.1):
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成为插件时),您应该只需卸载-lugin并删除DataSource.groovy文件。
答案 1 :(得分:6)
我能够注释掉数据源并获取默认的grails应用程序来运行。以与我在datasource.groovy
中注释掉以下代码相同的方式注释掉您的生产部分
/* development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
}*/
我还能够使用“grails uninstall-plugin hibernate”删除hibernate插件,并且仍然运行默认应用程序。我没有对此进行过广泛的测试,但希望这对你有用。
答案 2 :(得分:4)
内存数据库非常轻量级,因此如果您不需要真正的数据库,则应该坚持使用它。
答案 3 :(得分:2)
这是一本很好的指南:http://digitalbreed.com/2011/using-grails-without-a-database
删除Grails的Hibernate插件。
明确声明服务为非事务性的。默认值为true,您的类方法将被代理,但如果没有Hibernate插件,则没有事务管理器,部署将失败。
class SomeService { static transactional = false // ... }
使用命令对象而不是域对象,尤其是在需要验证时。