Guide des outils Des outils en ligne de commande, des plugins Eclipse ainsu que des tâches Ant permettent de gérer de cycles de développement complet de projets utilisant Hibernate. Les outils Hibernate actuels incluent des plugins pour l'IDE Eclipse ainsi que des tâches Ant pour l'ingénierie inverse de bases de données existantes : Mapping Editor : un éditeur pour les fichiers de mapping XML Hibernate, supportant l'auto-complétion et la mise en valeur de la syntaxe. Il supporte aussi l'auto-complétion automatique pour les noms de classes et les noms de propriété/champ, le rendant beaucoup plus polyvalent qu'un éditeurXML normal. Console : la console est une nouvelle vue d'Eclipse. En plus de la vue d'ensemble arborescente de vos configurations de console, vous obtenez aussi une vue interactive de vos classes persistantes et de leurs relations. La console vous permet d'exécuter des requête HQL dans votre base de données et de parcourir les résultats directement dans Eclipse. Development Wizards : plusieurs assistants sont fournis avec les outils d'Hibernate pour Eclipse ; vous pouvez utiliser un assistant pour générer rapidement les fichiers de configuration d'Hibernate (cfg.xml), ou vous pouvez même complètement générer les fichiers de mapping Hibernate et les sources des POJOs à partir d'un schéma de base de données existant. L'assistant d'ingénierie inverse supporte les modèles utilisateur. Tâches Ant : Veuillez-vous référer au paquet outils Hibernate et sa documentation pour plus d'informations. Pourtant, le paquet principal d'Hibernate arrive avec un lot d'outils intégrés (il peut même être utilisé de "l'intérieur" d'Hibernate à la volée) : SchemaExport aussi connu comme hbm2ddl. Génération automatique du schéma La DDL peut être générée à partir de vos fichiers de mapping par un utilitaire d'Hibernate. Le schéma généré inclut les contraintes d'intégrité référentielle (clefs primaires et étrangères) pour les tables d'entités et de collections. Les tables et les séquences sont aussi créées pour les générateurs d'identifiant mappés. Vous devez spécifier un Dialect SQL via la propriété hibernate.dialect lors de l'utilisation de cet outils, puisque la DDL est fortement dépendante de la base de données. D'abord, personnalisez vos fichiers de mapping pour améliorer le schéma généré. Personnaliser le schéma Plusieurs éléments du mapping hibernate définissent des attributs optionnels nommés length, precision et scale. Vous pouvez paramétrer la longueur, la précision,... d'une colonne avec ces attributs. ]]> ]]> Certains éléments acceptent aussi un attribut not-null (utilisé pour générer les contraintes de colonnes NOT NULL) et un attribut unique (pour générer une contrainte de colonne UNIQUE). ]]> ]]> Un attribut unique-key peut être utilisé pour grouper les colonnes en une seule contrainte d'unicité. Actuellement, la valeur spécifiée par l'attribut unique-key n'est pas utilisée pour nommer la contrainte dans le DDL généré, elle sert juste à grouper les colonnes dans le fichier de mapping. ]]> Un attribut index indique le nom d'un index qui sera créé en utilisant la ou les colonnes mappées. Plusieurs colonnes peuvent être groupées dans un même index, en spécifiant le même nom d'index. ]]> Un attribut foreign-key peut être utilisé pour surcharger le nom des clés étrangères générées. ]]> Plusieurs éléments de mapping acceptent aussi un élément fils <column>. Ceci est utile pour les type multi-colonnes: ]]> L'attribut default vous laisse spécifier une valeur par défaut pour une colonnes (vous devriez assigner la même valeur à la propriété mappée avant de sauvegarder une nouvelle instance de la classe mappée). ]]> ]]> L'attribut sql-type laisse l'utilisateur surcharger le mapping par défaut du type Hibernate vers un type SQL. ]]> L'attribut check permet de spécifier une contrainte de vérification. ]]> ... ]]> Summary Attribut Valeur Interprétation length numérique taille d'une colonne precision numérique précision décimale de la colonne scale numérique scale décimale de la colonne not-null true|false spécifie que la colonne doit être non-nulle unique true|false spécifie que la colonne doit avoir une contrainte d'unicité index index_name spécifie le nom d'un index (multi-colonnes) unique-key unique_key_name spécifie le nom d'une contrainte d'unicité multi-colonnes foreign-key foreign_key_name spécifie le nom d'une contrainte de clé étrangère générée pour une association, utilisez-la avec les éléments de mapping <one-to-one>, <many-to-one>, <key>, et <many-to-many> Notez que les extrêmités inverse="true" se seront pas prises en compte par SchemaExport. sql-type SQL column_type surcharge le type par défaut (attribut de l'élément <column> uniquement) default expression SQL spécifie une valeur par défaut pour la colonne check SQL expression crée une contrainte de vérification sur la table ou la colonne
L'élément <comment> vous permet de spécifier un commentaire pour le schéma généré. Current customers only ... ]]> Balance in USD ]]> Ceci a pour résultat une expression comment on table ou comment on column dans la DDL générée (où supportée).
Exécuter l'outil L'outil SchemaExport génère un script DDL vers la sortie standard et/ou exécute les ordres DDL. java -cp classpath_hibernate net.sf.hibernate.tool.hbm2ddl.SchemaExport options fichiers_de_mapping <literal>SchemaExport</literal> Options de la ligne de commande Option Description --quiet ne pas écrire le script vers la sortie standard --drop supprime seuleument les tables --create ne créé que les tables --text ne pas exécuter sur la base de données --output=my_schema.ddl écrit le script ddl vers un fichier --naming=eg.MyNamingStrategy sélectionne une NamingStrategy --config=hibernate.cfg.xml lit la configuration Hibernate à partir d'un fichier XML --properties=hibernate.properties lit les propriétés de la base de données à partir d'un fichier --format formatte proprement le SQL généré dans le script --delimiter=x paramètre un délimiteur de fin de ligne pour le script
Vous pouvez même intégrer SchemaExport dans votre application :
Propriétés Les propriétés de la base de données peuvent être spécifiées comme propriétés système avec -D<property> dans hibernate.properties dans un fichier de propriétés déclaré avec --properties Les propriétés nécessaires sont : SchemaExport Connection Properties Nom de la propriété Description hibernate.connection.driver_class classe du driver JDBC hibernate.connection.url URL JDBC hibernate.connection.username utilisateur de la base de données hibernate.connection.password mot de passe de l'utilisateur hibernate.dialect dialecte
Utiliser Ant Vous pouvez appeler SchemaExport depuis votre script de construction Ant : ]]> Mises à jour incrémentales du schéma L'outil SchemaUpdate mettra à jour un schéma existant en effectuant les changement par "incrément". Notez que SchemaUpdate dépends beaucoup de l'API JDBC metadata, il ne fonctionnera donc pas avec tous les drivers JDBC. java -cp classpath_hibernate net.sf.hibernate.tool.hbm2ddl.SchemaUpdate options fichiers_de_mapping <literal>SchemaUpdate</literal> Options de ligne de commande Option Description --quiet ne pas écrire vers la sortie standard --text ne pas exporter vers la base de données --naming=eg.MyNamingStrategy choisit une NamingStrategy --properties=hibernate.properties lire les propriétés de la base de données à partir d'un fichier
Vous pouvez intégrer SchemaUpdate dans votre application :
Utiliser Ant pour des mises à jour de schéma par incrément Vous pouvez appeler SchemaUpdate depuis le script Ant : ]]> Validation du schéma L'outil SchemaValidator validera que le schéma existant correspond à vos documents de mapping. Notez que le SchemaValidator dépends de l'API metadata de JDBC, il ne fonctionnera donc pas avec tous les drivers JDBC. Cet outil est extrêmement utile pour tester. java -cp hibernate_classpaths org.hibernate.tool.hbm2ddl.SchemaValidator options mapping_files <literal>SchemaValidator</literal> Options de ligne de commande Option Description --naming=eg.MyNamingStrategy Indique une NamingStrategy --properties=hibernate.properties lit les propriétés dela base de données depuis un fichier de propriétés --config=hibernate.cfg.xml indique un fichier .cfg.xml
Vous pouvez inclure SchemaValidator dans votre application:
Utiliser Ant pour la validation du Schéma Vous pouvez appeler SchemaValidator depuis le script Ant: ]]>