从Grails中的CSV加载数据

从Grails中的CSV加载数据,grails,gorm,Grails,Gorm,我有一个CSV文件,上面有一个“被禁止的用户名”列表——大约有10000个用户名。基本上,我想在用户注册时对照此列表进行检查。我希望将此列表加载到数据库中,但我不希望为每个名称创建域对象并引导它们。但是,在管理数据方面,我也希望留在Grails框架内。例如,如果将dbCreate设置为createdrop,我不想丢失用户名列表——也就是说,我不想手工创建一个单独的表。我该怎么做呢?Grails是否提供了任何开箱即用的方法来处理这种情况?任何建议都很好我想你会希望这些数据在数据库中。这样,您可以根

我有一个CSV文件,上面有一个“被禁止的用户名”列表——大约有10000个用户名。基本上,我想在用户注册时对照此列表进行检查。我希望将此列表加载到数据库中,但我不希望为每个名称创建域对象并引导它们。但是,在管理数据方面,我也希望留在Grails框架内。例如,如果将dbCreate设置为createdrop,我不想丢失用户名列表——也就是说,我不想手工创建一个单独的表。我该怎么做呢?Grails是否提供了任何开箱即用的方法来处理这种情况?任何建议都很好

我想你会希望这些数据在数据库中。这样,您可以根据“黑名单”名称查询注册用户

那么,为那些被禁止的用户名创建一个域类并将其存储在数据库中到底有什么问题?我能看到的唯一问题是,每次在开发中启动应用程序时,您都需要将它们作为种子数据加载(在生产中,您不会使用CreateDrop,是吗?;-))。我还没有测试过,但我的猜测是,对于10000个非常简单的对象,这不应该是一个恼人的性能拦截器。。在生产环境中,您很可能使用“更新”作为hibernate策略,因此只需将数据加载到生产数据库中一次。因此,我的首选方法是创建一个域类,并在应用程序启动时加载数据(仅在开发中)


如果您禁用的用户名数据是只读的(即,列表在运行时未被扩展),您也可以考虑将其加载到内存中(可能是<代码> HasStuts为常数时间<代码>包含()<代码> >。10000个字符串在内存消耗方面应该不是问题,每次应用程序启动时加载它们也不是问题,因为通常不会太频繁地重新启动生产环境。

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

是的,我决定走这条路-谢谢你的输入!我需要把我的数据放在数据库里。这是迄今为止加载它的最快方式。谢谢