1

我有一些数据 stateNames 来实例化对象 Country 的实例。现在,我只有一个国家,但每个国家的 stateNames 应该是不同的。用我的数据实例化 Country 实例的最佳方法是什么?我是 grails 的新手,我会欣赏任何“最佳实践”或常见设计。

我能想到的一种解决方案是使用 BootStrap 将 Country 的美国实例保存到数据库中。这种方法有什么缺点?

另一种解决方案是将数据保存在 web-app 文件夹下的文件中(在 xml 中?)。如果我采用这种方法,Country 的美国实例是否应该由控制器实例化?

4

2 回答 2

1

项目应旨在在签出代码后无需任何设置即可在开发模式下运行。考虑到这一点,BootStrap.groovy使用最少的数据集(例如用户帐户或国家名称等静态数据)初始化数据库是一个好地方。

一种常见的模式是检查某些已知实例——例如管理员用户帐户——并在不存在时插入最小数据集。例如:

class BootStrap {

    def init = { servletContext ->
        def admin = User.findByUsername('admin')
        if (!admin) {
            // initialize the database by inserting a minimal data set
        }
    }
}
于 2012-12-18T17:23:29.940 回答
0

编写一个接受输入并持久化到 DB 的服务,并根据您的要求从任何地方调用它,无论是引导程序还是控制器。引导带是繁重的好方法。

于 2012-12-18T17:01:20.130 回答