2010-06-17 5 views
0

J'ai un fichier CSV avec une liste de "noms d'utilisateur bannis" - c'est environ 10 000 noms. Fondamentalement, je veux vérifier cette liste lors de l'inscription de l'utilisateur. Je voudrais charger cette liste dans ma base de données mais je préfère ne pas créer un objet de domaine pour chaque nom et BootStrap eux. Cependant, j'aimerais aussi rester dans le cadre de Grails en ce qui concerne la gestion de mes données. Par exemple, si dbCreate est défini sur create-drop, je ne veux pas perdre ma liste de noms d'utilisateurs. En d'autres termes, je ne veux pas créer une table distincte à la main. Comment devrais-je faire cela? Est-ce que Grails fournit quelque chose hors de la boîte pour gérer ce type de situation? Tout conseil serait grandCharger des données à partir de CSV dans Grails

Répondre

1

Alors, quel est exactement votre problème avec la création d'une classe de domaine pour ces noms d'utilisateur bannis et de les stocker dans la base de données? Le seul problème que je peux voir est que vous devez les charger en tant que données de départ chaque fois que vous démarrez votre application en développement (en production, vous n'utilisez pas create-drop, voulez-vous? ;-)). Je ne l'ai pas testé, mais je suppose qu'avec 10 000 objets très simples, cela ne devrait pas être un bloqueur de performance gênant. En production, vous utiliserez probablement la "mise à jour" en tant que stratégie d'hibernation, il vous suffit de charger vos données une fois dans la base de données de production. Donc, mon moyen préféré serait de créer une classe de domaine et de charger les données au démarrage de l'application (en développement uniquement).

Si vos données de nom d'utilisateur interdit est en lecture seule (ie. La liste ne soit pas prolongée au cours de l'exécution), vous pouvez aussi envisager de le charger dans la mémoire (probablement un HashSet pour le temps constant). 10.000 chaînes ne devraient pas être un problème en ce qui concerne la consommation de mémoire et le besoin de les charger à chaque démarrage de l'application n'est pas non plus un problème, car généralement, vous ne redémarrez pas votre environnement de production trop souvent.

+0

Ouais, j'ai décidé de suivre cette voie - Merci pour l'entrée! – RyanLynch

0

Je pense que vous voudriez que ces données soient dans la base de données. De cette façon, vous pouvez interroger l'utilisateur qui s'enregistre par rapport aux noms "blacklistés".

1

Oui, vous pouvez charger votre fichier dans votre base de données et l'utiliser dans votre application Grails. À ce stade, vous pouvez utiliser Groovy Sql pour faire vos requêtes personnalisées. Je pense que c'est une bonne pratique de garder les requêtes ensemble à l'intérieur des classes de style DAO mais c'est à vous de décider. Si vous suivez cette route, vous pouvez toujours utiliser l'injection de dépendance des classes DAO dans vos services en utilisant les annotations @Component et @Resource

+0

J'avais besoin d'avoir mes données dans la base de données. C'était de loin le moyen le plus rapide de le charger. Merci – mlathe

Questions connexes