Can I configure Grails with no datasource?

25

我有一个Grails应用程序,它从xml文件加载数据,并通过rome提供rss订阅。 我没有任何领域类,我的应用程序也没有数据源。 当应用程序不需要时,我不希望Grails加载内存中的hsql数据库。 删除DataSource.groovy文件会导致无法启动Web应用程序,似乎需要数据源,但是如果我的应用程序不需要数据源,我能做些什么呢?

4个回答

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成为插件时),您应该可以只卸载插件并删除DataSource.groovy文件。


在较新版本的Grails中,您需要在BuildConfig.groovy中注释掉插件,而不是运行uninstall-plugin。此外,正如@Jared在另一个答案中建议的那样,您也可以在DataSource.groovy中注释掉相应的行。 - Jason

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插件,并且仍然可以运行默认应用程序。我没有进行过广泛的测试,但希望这对您有用。

4

如果您不需要真正的数据库,那么内存数据库非常轻巧,建议您使用它。


3
我们遇到了类似的问题。在同一个Tomcat实例上使用默认数据源设置部署多个Grails应用程序是行不通的。我认为这是因为hSQL实例使用了相同的磁盘锁文件,或者类似的原因导致的。 - Gennadiy
2
是的,默認的生產數據源使用一個hql文件數據存儲庫。您無法將相同的文件名用於多個grails應用程序,因此需要在數據源中更改數據庫名稱。這非常煩人。即使它很輕巧,如果您不打算使用它,為什麼要將其放在那裡,最好能夠完全不需要數據源。 - Jack Chu

2

这是一篇好的指南:http://digitalbreed.com/2011/using-grails-without-a-database

移除Grails的Hibernate插件。

  1. grails uninstall-plugin hibernate
  2. 删除数据源配置文件 conf/DataSource.groovy
  3. 显式声明服务为非事务性的。默认值为true,类方法将被代理,但没有Hibernate插件就没有事务管理器,部署会失败。

    class SomeService { static transactional = false // ... }

  4. 使用命令对象而不是领域对象, 特别是如果需要验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接