2010-06-17 76 views
0

我有一个带有“禁止的用户名”列表的CSV文件 - 它有大约10,000个名字。基本上我想在用户注册时检查这个列表。我想在我的数据库中加载这个列表,但我宁愿不为每个名称和BootStrap创建一个域对象。不过,就管理我的数据而言,我也希望保留在Grails框架内。例如,如果我将dbCreate设置为create-drop,我不想丢失我的用户名列表 - 也就是说,我不想仅仅手动创建单独的表。我应该如何去做这件事? Grails是否提供任何开箱即用来处理这种情况?任何意见将是伟大的在Grails中从CSV加载数据

回答

1

那么,为那些被禁止的用户名创建一个域类并将它们存储在数据库中的问题究竟是什么?我可以看到的唯一问题是,每次在开发中启动应用程序时,您都需要将它们作为种子数据加载(在生产中,您不会使用创建 - 删除,您会吗?;-))。我没有测试过这个,但我的猜测是,有10,000个非常简单的对象,这不应该是一个恼人的性能障碍。在生产中,你最有可能使用“更新”作为休眠策略,所以你只需要加载你的数据一旦进入生产数据库。所以,我最喜欢的方式是创建一个域类并在应用程序启动时加载数据(仅在开发中)。

如果您的禁用用户名数据是只读的(即该列表在运行时不扩展),您也可以考虑将其加载到内存中(可能为HashSet,持续时间为)。 10,000个字符串应该不会成为内存消耗方面的问题,并且在每次应用程序启动时加载它们也不是问题,因为通常您不会经常重新启动生产环境。

+0

是的,我决定走这条路线 - 感谢您的输入! – RyanLynch 2010-06-18 09:50:16

0

我想你会希望这个数据在数据库中。这样你可以查询注册用户对'黑名单'的名字。

1

是的,你可以加载你的文件到你的数据库,并仍然在你的grails应用程序中使用它。 在这一点上,您可以使用Groovy Sql来执行您的自定义查询。我认为将查询集中在DAO样式类中是一种很好的做法,但这取决于您。 如果你走这条路线,你仍然可以使用依赖注入的DAO类到您的服务通过使用@Component和@Resource注释

+0

我需要在数据库中存储我的数据。这是加载它的最快方式。谢谢 – mlathe 2011-03-16 17:16:41