我有一些数据stateNames来实例化对象Country的实例。现在,我只有一个国家,但每个国家的州名应该是不同的。使用我的数据实例化Country实例的最佳方法是什么?我是grails的新手并且会欣赏任何“最佳实践”或常见设计。
我能想到的一个解决方案是使用BootStrap将Country的unitedStates实例保存到数据库中。这种方法的缺点是什么?
另一种解决方案是将数据保存在web-app文件夹下的文件(xml?中)中。如果我采用这种方法,那么USA的unitedStates实例是否应该由控制器实例化?
答案 0 :(得分:1)
项目应该在签出代码后,无需任何设置即可在开发模式下运行。考虑到这一点,BootStrap.groovy
是使用最小数据集初始化数据库的好地方,例如用户帐户或国家名称等静态数据。
常见的模式是检查某些已知实例(如管理员用户帐户),并插入最小数据集(如果不存在)。例如:
class BootStrap {
def init = { servletContext ->
def admin = User.findByUsername('admin')
if (!admin) {
// initialize the database by inserting a minimal data set
}
}
}
答案 1 :(得分:0)
编写服务接受输入并持久保存到DB中,并根据您的要求从任何地方调用它,无论是引导程序还是控制器。绑带是重吊的好方法。