DBIx::Class::Schema::Loader est un module qui permet de générer
automatiquement un schéma DBIx::Class::Schema à partir d'une base de
données. C'est donc l'outil indispensable si vous avez une base de
données sous la main que vous voulez manipuler à partir de
DBIx::Class.
DBIx::Class::Schema::Loader vient avec un utilitaire nommé
dbicdump qui, comme son nom le laisse entendre, permet de copier le
schéma créé automatiquement par DBIx::Class::Schema::Loader sur le
disque dur.
Dans son utilisation la plus simple, dbicdump s'emploie de la
manière suivante :
dbicdump MyDB::Schema dbi:SQLite:dbname=MyDB.db
Donc le premier argument est le nom du schéma DBIx::Class::Schema
qui sera employé.
Le second argument est le dsn qui sera employé pour se connecter à
la base de données. Dans le cas présent, le dsn est une base de
données SQLite pour laquelle il n'est pas nécessaire de donner les
identifiants de connexion. Si ces derniers avaient été nécessaires,
ils auraient été les troisième ét quatrième arguments.
Après l'exécution de la commande ci-dessus, vous aurez un répertoire
MyDB contenant un fichier nommé Schema.pm et un répertoire nommé
Schema. Dans ce dernier, nous aurons un sous-répertoire nommé
Result, qui lui même contiendra les différents fichiers nécessaires
pour gérer les tables de la base de données. Cette structure de
fichier respecte les conventions habituelles de DBIx::Class. Il est
donc nécessaire de se familiariser avec ces conventions avant de
pouvoir tirer parti complètement de la puissance de cet outil.
Une question que je n'ai pas encore eu l'occasion d'approfondir est de
savoir s'il est préférable d'utiliser DBIC::Schema::Loader en
mémoire vive ou s'il est préférable d'utiliser dbicdump. Il y a un
coût à l'analyse effectuée par DBIx::Class::Schema::Loader pour
créer les classes DBIC, il faut donc voir dans quelles situations ce
coût est justifié ; probablement lors du début du projet, quand le
schéma de la base de données évolue encore.
Quoi qu'il en soit, dbicdump et DBIx::Class::Schema::Loader sont
deux outils essentiels pour la boîte à outil du mongueur devant
travailler avec des bases de données.



