595 lines
26 KiB
XML
595 lines
26 KiB
XML
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
|||
|
<chapter id="toolsetguide" revision="2">
|
|||
|
<title>Guide des outils</title>
|
|||
|
|
|||
|
<para>
|
|||
|
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.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Les <emphasis>outils Hibernate</emphasis> actuels incluent des plugins pour l'IDE Eclipse ainsi que des t<>ches Ant pour l'ing<6E>nierie
|
|||
|
inverse de bases de donn<6E>es existantes :
|
|||
|
</para>
|
|||
|
|
|||
|
<itemizedlist>
|
|||
|
<listitem><para>
|
|||
|
<emphasis>Mapping Editor :</emphasis> un <20>diteur pour les fichiers de mapping XML Hibernate, supportant l'auto-compl<70>tion et la mise en valeur de la syntaxe.
|
|||
|
Il supporte aussi l'auto-compl<70>tion automatique pour les noms de classes et les noms de propri<72>t<EFBFBD>/champ,
|
|||
|
le rendant beaucoup plus polyvalent qu'un <20>diteurXML normal.
|
|||
|
</para></listitem>
|
|||
|
<listitem><para>
|
|||
|
<emphasis>Console :</emphasis> 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<65>cuter des requ<71>te HQL dans votre base de donn<6E>es et de parcourir les r<>sultats directement dans Eclipse.
|
|||
|
</para></listitem>
|
|||
|
<listitem><para>
|
|||
|
<emphasis>Development Wizards :</emphasis> plusieurs assistants sont fournis avec les outils d'Hibernate
|
|||
|
pour Eclipse ; vous pouvez utiliser un assistant pour g<>n<EFBFBD>rer rapidement les fichiers de configuration d'Hibernate (cfg.xml),
|
|||
|
ou vous pouvez m<>me compl<70>tement g<>n<EFBFBD>rer les fichiers de mapping Hibernate et les sources des POJOs <20> partir d'un sch<63>ma de base de donn<6E>es existant.
|
|||
|
L'assistant d'ing<6E>nierie inverse supporte les mod<6F>les utilisateur.
|
|||
|
</para></listitem>
|
|||
|
<listitem><para>
|
|||
|
<emphasis>T<EFBFBD>ches Ant :</emphasis>
|
|||
|
</para></listitem>
|
|||
|
|
|||
|
</itemizedlist>
|
|||
|
|
|||
|
<para>
|
|||
|
Veuillez-vous r<>f<EFBFBD>rer au paquet <emphasis>outils Hibernate</emphasis> et sa documentation pour plus d'informations.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Pourtant, le paquet principal d'Hibernate arrive avec un lot d'outils int<6E>gr<67>s (il peut m<>me <20>tre utilis<69> de "l'int<6E>rieur" d'Hibernate <20> la vol<6F>e) :
|
|||
|
<emphasis>SchemaExport</emphasis> aussi connu comme
|
|||
|
<literal>hbm2ddl</literal>.
|
|||
|
</para>
|
|||
|
|
|||
|
<sect1 id="toolsetguide-s1" revision="2">
|
|||
|
<title>G<EFBFBD>n<EFBFBD>ration automatique du sch<63>ma</title>
|
|||
|
|
|||
|
<para>
|
|||
|
La DDL peut <20>tre g<>n<EFBFBD>r<EFBFBD>e <20> partir de vos fichiers de mapping par un utilitaire d'Hibernate. Le sch<63>ma g<>n<EFBFBD>r<EFBFBD>
|
|||
|
inclut les contraintes d'int<6E>grit<69> r<>f<EFBFBD>rentielle (clefs primaires et <20>trang<6E>res) pour les tables d'entit<69>s
|
|||
|
et de collections. Les tables et les s<>quences sont aussi cr<63><72>es pour les g<>n<EFBFBD>rateurs d'identifiant mapp<70>s.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous <emphasis>devez</emphasis> sp<73>cifier un <literal>Dialect</literal> SQL via la propri<72>t<EFBFBD>
|
|||
|
<literal>hibernate.dialect</literal> lors de l'utilisation de cet outils, puisque la DDL est
|
|||
|
fortement d<>pendante de la base de donn<6E>es.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
D'abord, personnalisez vos fichiers de mapping pour am<61>liorer le sch<63>ma g<>n<EFBFBD>r<EFBFBD>.
|
|||
|
</para>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-2" revision="3">
|
|||
|
<title>Personnaliser le sch<63>ma</title>
|
|||
|
|
|||
|
<para>
|
|||
|
Plusieurs <20>l<EFBFBD>ments du mapping hibernate d<>finissent des attributs optionnels
|
|||
|
nomm<6D>s <literal>length</literal>, <literal>precision</literal> et <literal>scale</literal>.
|
|||
|
Vous pouvez param<61>trer la longueur, la pr<70>cision,... d'une colonne avec ces attributs.
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="zip" length="5"/>]]></programlisting>
|
|||
|
<programlisting><![CDATA[<property name="balance" precision="12" scale="2"/>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
Certains <20>l<EFBFBD>ments acceptent aussi un attribut <literal>not-null</literal>
|
|||
|
(utilis<69> pour g<>n<EFBFBD>rer les contraintes de colonnes <literal>NOT NULL</literal>) et
|
|||
|
un attribut <literal>unique</literal> (pour g<>n<EFBFBD>rer une contrainte de colonne
|
|||
|
<literal>UNIQUE</literal>).
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<many-to-one name="bar" column="barId" not-null="true"/>]]></programlisting>
|
|||
|
<programlisting><![CDATA[<element column="serialNumber" type="long" not-null="true" unique="true"/>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
Un attribut <literal>unique-key</literal> peut <20>tre utilis<69> pour grouper les colonnes
|
|||
|
en une seule contrainte d'unicit<69>. Actuellement, la valeur sp<73>cifi<66>e par
|
|||
|
l'attribut <literal>unique-key</literal> n'est <emphasis>pas</emphasis> utilis<69>e pour
|
|||
|
nommer la contrainte dans le DDL g<>n<EFBFBD>r<EFBFBD>, elle sert juste <20> grouper les colonnes
|
|||
|
dans le fichier de mapping.
|
|||
|
</para>
|
|||
|
<programlisting><![CDATA[<many-to-one name="org" column="orgId" unique-key="OrgEmployeeId"/>
|
|||
|
<property name="employeeId" unique-key="OrgEmployee"/>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
Un attribut <literal>index</literal> indique le nom d'un index qui sera
|
|||
|
cr<63><72> en utilisant la ou les colonnes mapp<70>es. Plusieurs colonnes
|
|||
|
peuvent <20>tre group<75>es dans un m<>me index, en sp<73>cifiant le m<>me
|
|||
|
nom d'index.
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="lastName" index="CustName"/>
|
|||
|
<property name="firstName" index="CustName"/>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
Un attribut <literal>foreign-key</literal> peut <20>tre utilis<69> pour surcharger le nom
|
|||
|
des cl<63>s <20>trang<6E>res g<>n<EFBFBD>r<EFBFBD>es.
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<many-to-one name="bar" column="barId" foreign-key="FKFooBar"/>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
Plusieurs <20>l<EFBFBD>ments de mapping acceptent aussi un <20>l<EFBFBD>ment fils <literal><column></literal>.
|
|||
|
Ceci est utile pour les type multi-colonnes:
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="name" type="my.customtypes.Name"/>
|
|||
|
<column name="last" not-null="true" index="bar_idx" length="30"/>
|
|||
|
<column name="first" not-null="true" index="bar_idx" length="20"/>
|
|||
|
<column name="initial"/>
|
|||
|
</property>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
L'attribut <literal>default</literal> vous laisse sp<73>cifier une valeur par d<>faut pour
|
|||
|
une colonnes (vous devriez assigner la m<>me valeur <20> la propri<72>t<EFBFBD> mapp<70>e avant de sauvegarder une nouvelle instance
|
|||
|
de la classe mapp<70>e).
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="credits" type="integer" insert="false">
|
|||
|
<column name="credits" default="10"/>
|
|||
|
</property>]]></programlisting>
|
|||
|
|
|||
|
<programlisting><![CDATA[<version name="version" type="integer" insert="false">
|
|||
|
<column name="version" default="0"/>
|
|||
|
</property>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
L'attribut <literal>sql-type</literal> laisse l'utilisateur surcharger le mapping
|
|||
|
par d<>faut du type Hibernate vers un type SQL.
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="balance" type="float">
|
|||
|
<column name="balance" sql-type="decimal(13,3)"/>
|
|||
|
</property>]]></programlisting>
|
|||
|
|
|||
|
|
|||
|
<para>
|
|||
|
L'attribut <literal>check</literal> permet de sp<73>cifier une contrainte de v<>rification.
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="foo" type="integer">
|
|||
|
<column name="foo" check="foo > 10"/>
|
|||
|
</property>]]></programlisting>
|
|||
|
|
|||
|
<programlisting><![CDATA[<class name="Foo" table="foos" check="bar < 100.0">
|
|||
|
...
|
|||
|
<property name="bar" type="float"/>
|
|||
|
</class>]]></programlisting>
|
|||
|
|
|||
|
|
|||
|
<table frame="topbot" id="schemattributes-summary" revision="2">
|
|||
|
<title>Summary</title>
|
|||
|
<tgroup cols="3">
|
|||
|
<colspec colwidth="1*"/>
|
|||
|
<colspec colwidth="1*"/>
|
|||
|
<colspec colwidth="2.5*"/>
|
|||
|
<thead>
|
|||
|
<row>
|
|||
|
<entry>Attribut</entry>
|
|||
|
<entry>Valeur</entry>
|
|||
|
<entry>Interpr<EFBFBD>tation</entry>
|
|||
|
</row>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<row>
|
|||
|
<entry><literal>length</literal></entry>
|
|||
|
<entry>num<EFBFBD>rique</entry>
|
|||
|
<entry>taille d'une colonne</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>precision</literal></entry>
|
|||
|
<entry>num<EFBFBD>rique</entry>
|
|||
|
<entry>pr<EFBFBD>cision d<>cimale de la colonne</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>scale</literal></entry>
|
|||
|
<entry>num<EFBFBD>rique</entry>
|
|||
|
<entry>scale d<>cimale de la colonne</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>not-null</literal></entry>
|
|||
|
<entry><literal>true|false</literal></entry>
|
|||
|
<entry>sp<EFBFBD>cifie que la colonne doit <20>tre non-nulle</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>unique</literal></entry>
|
|||
|
<entry><literal>true|false</literal></entry>
|
|||
|
<entry>sp<EFBFBD>cifie que la colonne doit avoir une contrainte d'unicit<69></entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>index</literal></entry>
|
|||
|
<entry><literal>index_name</literal></entry>
|
|||
|
<entry>sp<EFBFBD>cifie le nom d'un index (multi-colonnes)</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>unique-key</literal></entry>
|
|||
|
<entry><literal>unique_key_name</literal></entry>
|
|||
|
<entry>sp<EFBFBD>cifie le nom d'une contrainte d'unicit<69> multi-colonnes</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>foreign-key</literal></entry>
|
|||
|
<entry><literal>foreign_key_name</literal></entry>
|
|||
|
<entry>
|
|||
|
sp<73>cifie le nom d'une contrainte de cl<63> <20>trang<6E>re g<>n<EFBFBD>r<EFBFBD>e pour
|
|||
|
une association, utilisez-la avec les <20>l<EFBFBD>ments de mapping
|
|||
|
<one-to-one>, <many-to-one>, <key>, et <many-to-many>
|
|||
|
Notez que les extr<74>mit<69>s <literal>inverse="true"</literal>
|
|||
|
se seront pas prises en compte par <literal>SchemaExport</literal>.
|
|||
|
</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>sql-type</literal></entry>
|
|||
|
<entry><literal>SQL column_type</literal></entry>
|
|||
|
<entry>
|
|||
|
surcharge le type par d<>faut (attribut de
|
|||
|
l'<27>l<EFBFBD>ment <literal><column></literal> uniquement)
|
|||
|
</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>default</literal></entry>
|
|||
|
<entry>expression SQL</entry>
|
|||
|
<entry>
|
|||
|
sp<73>cifie une valeur par d<>faut pour la colonne
|
|||
|
</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>check</literal></entry>
|
|||
|
<entry>SQL expression</entry>
|
|||
|
<entry>
|
|||
|
cr<63>e une contrainte de v<>rification sur la table ou la colonne
|
|||
|
</entry>
|
|||
|
</row>
|
|||
|
</tbody>
|
|||
|
</tgroup>
|
|||
|
</table>
|
|||
|
|
|||
|
<para>
|
|||
|
L'<27>l<EFBFBD>ment <literal><comment></literal> vous permet de sp<73>cifier un commentaire pour le sch<63>ma g<>n<EFBFBD>r<EFBFBD>.
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<class name="Customer" table="CurCust">
|
|||
|
<comment>Current customers only</comment>
|
|||
|
...
|
|||
|
</class>]]></programlisting>
|
|||
|
|
|||
|
<programlisting><![CDATA[<property name="balance">
|
|||
|
<column name="bal">
|
|||
|
<comment>Balance in USD</comment>
|
|||
|
</column>
|
|||
|
</property>]]></programlisting>
|
|||
|
|
|||
|
<para>
|
|||
|
Ceci a pour r<>sultat une expression
|
|||
|
<literal>comment on table</literal> ou
|
|||
|
<literal>comment on column</literal> dans la DDL g<>n<EFBFBD>r<EFBFBD>e (o<> support<72>e).
|
|||
|
</para>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-3" revision="2">
|
|||
|
<title>Ex<EFBFBD>cuter l'outil</title>
|
|||
|
|
|||
|
<para>
|
|||
|
L'outil <literal>SchemaExport</literal> g<>n<EFBFBD>re un script DDL vers
|
|||
|
la sortie standard et/ou ex<65>cute les ordres DDL.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
<literal>java -cp </literal><emphasis>classpath_hibernate</emphasis>
|
|||
|
<literal>net.sf.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options fichiers_de_mapping</emphasis>
|
|||
|
</para>
|
|||
|
|
|||
|
<table frame="topbot">
|
|||
|
<title><literal>SchemaExport</literal> Options de la ligne de commande</title>
|
|||
|
<tgroup cols="2">
|
|||
|
<colspec colwidth="1.5*"/>
|
|||
|
<colspec colwidth="2*"/>
|
|||
|
<thead>
|
|||
|
<row>
|
|||
|
<entry>Option</entry>
|
|||
|
<entry>Description</entry>
|
|||
|
</row>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<row>
|
|||
|
<entry><literal>--quiet</literal></entry>
|
|||
|
<entry>ne pas <20>crire le script vers la sortie standard</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--drop</literal></entry>
|
|||
|
<entry>supprime seuleument les tables</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--create</literal></entry>
|
|||
|
<entry>ne cr<63><72> que les tables</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--text</literal></entry>
|
|||
|
<entry>ne pas ex<65>cuter sur la base de donn<6E>es</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--output=my_schema.ddl</literal></entry>
|
|||
|
<entry><EFBFBD>crit le script ddl vers un fichier</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--naming=eg.MyNamingStrategy</literal></entry>
|
|||
|
<entry>s<EFBFBD>lectionne une <literal>NamingStrategy</literal></entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--config=hibernate.cfg.xml</literal></entry>
|
|||
|
<entry>lit la configuration Hibernate <20> partir d'un fichier XML</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--properties=hibernate.properties</literal></entry>
|
|||
|
<entry>lit les propri<72>t<EFBFBD>s de la base de donn<6E>es <20> partir d'un fichier</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--format</literal></entry>
|
|||
|
<entry>formatte proprement le SQL g<>n<EFBFBD>r<EFBFBD> dans le script</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--delimiter=x</literal></entry>
|
|||
|
<entry>param<EFBFBD>tre un d<>limiteur de fin de ligne pour le script</entry>
|
|||
|
</row>
|
|||
|
</tbody>
|
|||
|
</tgroup>
|
|||
|
</table>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous pouvez m<>me int<6E>grer <literal>SchemaExport</literal> dans votre application :
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[Configuration cfg = ....;
|
|||
|
new SchemaExport(cfg).create(false, true);]]></programlisting>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-4">
|
|||
|
<title>Propri<EFBFBD>t<EFBFBD>s</title>
|
|||
|
|
|||
|
<para>
|
|||
|
Les propri<72>t<EFBFBD>s de la base de donn<6E>es peuvent <20>tre sp<73>cifi<66>es
|
|||
|
</para>
|
|||
|
|
|||
|
<itemizedlist spacing="compact">
|
|||
|
<listitem>
|
|||
|
<para>comme propri<72>t<EFBFBD>s syst<73>me avec <literal>-D</literal><emphasis><property></emphasis></para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>dans <literal>hibernate.properties</literal></para>
|
|||
|
</listitem>
|
|||
|
<listitem>
|
|||
|
<para>dans un fichier de propri<72>t<EFBFBD>s d<>clar<61> avec <literal>--properties</literal></para>
|
|||
|
</listitem>
|
|||
|
</itemizedlist>
|
|||
|
|
|||
|
<para>
|
|||
|
Les propri<72>t<EFBFBD>s n<>cessaires sont :
|
|||
|
</para>
|
|||
|
|
|||
|
<table frame="topbot">
|
|||
|
<title>SchemaExport Connection Properties</title>
|
|||
|
<tgroup cols="2">
|
|||
|
<colspec colwidth="1.5*"/>
|
|||
|
<colspec colwidth="2*"/>
|
|||
|
<thead>
|
|||
|
<row>
|
|||
|
<entry>Nom de la propri<72>t<EFBFBD></entry>
|
|||
|
<entry>Description</entry>
|
|||
|
</row>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<row>
|
|||
|
<entry><literal>hibernate.connection.driver_class</literal></entry>
|
|||
|
<entry>classe du driver JDBC</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>hibernate.connection.url</literal></entry>
|
|||
|
<entry>URL JDBC</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>hibernate.connection.username</literal></entry>
|
|||
|
<entry>utilisateur de la base de donn<6E>es</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>hibernate.connection.password</literal></entry>
|
|||
|
<entry>mot de passe de l'utilisateur</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>hibernate.dialect</literal></entry>
|
|||
|
<entry>dialecte</entry>
|
|||
|
</row>
|
|||
|
</tbody>
|
|||
|
</tgroup>
|
|||
|
</table>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-5">
|
|||
|
<title>Utiliser Ant</title>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous pouvez appeler <literal>SchemaExport</literal> depuis votre script
|
|||
|
de construction Ant :
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<target name="schemaexport">
|
|||
|
<taskdef name="schemaexport"
|
|||
|
classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
|
|||
|
classpathref="class.path"/>
|
|||
|
|
|||
|
<schemaexport
|
|||
|
properties="hibernate.properties"
|
|||
|
quiet="no"
|
|||
|
text="no"
|
|||
|
drop="no"
|
|||
|
delimiter=";"
|
|||
|
output="schema-export.sql">
|
|||
|
<fileset dir="src">
|
|||
|
<include name="**/*.hbm.xml"/>
|
|||
|
</fileset>
|
|||
|
</schemaexport>
|
|||
|
</target>]]></programlisting>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-6" revision="2">
|
|||
|
<title>Mises <20> jour incr<63>mentales du sch<63>ma</title>
|
|||
|
|
|||
|
<para>
|
|||
|
L'outil <literal>SchemaUpdate</literal> mettra <20> jour un sch<63>ma existant
|
|||
|
en effectuant les changement par "incr<63>ment".
|
|||
|
Notez que <literal>SchemaUpdate</literal> d<>pends beaucoup de l'API JDBC
|
|||
|
metadata, il ne fonctionnera donc pas avec tous les drivers JDBC.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
<literal>java -cp </literal><emphasis>classpath_hibernate</emphasis>
|
|||
|
<literal>net.sf.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options fichiers_de_mapping</emphasis>
|
|||
|
</para>
|
|||
|
|
|||
|
<table frame="topbot">
|
|||
|
<title><literal>SchemaUpdate</literal> Options de ligne de commande</title>
|
|||
|
<tgroup cols="2">
|
|||
|
<colspec colwidth="1.5*"/>
|
|||
|
<colspec colwidth="2*"/>
|
|||
|
<thead>
|
|||
|
<row>
|
|||
|
<entry>Option</entry>
|
|||
|
<entry>Description</entry>
|
|||
|
</row>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<row>
|
|||
|
<entry><literal>--quiet</literal></entry>
|
|||
|
<entry>ne pas <20>crire vers la sortie standard</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--text</literal></entry>
|
|||
|
<entry>ne pas exporter vers la base de donn<6E>es</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--naming=eg.MyNamingStrategy</literal></entry>
|
|||
|
<entry>choisit une <literal>NamingStrategy</literal></entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--properties=hibernate.properties</literal></entry>
|
|||
|
<entry>lire les propri<72>t<EFBFBD>s de la base de donn<6E>es <20> partir d'un fichier</entry>
|
|||
|
</row>
|
|||
|
</tbody>
|
|||
|
</tgroup>
|
|||
|
</table>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous pouvez int<6E>grer <literal>SchemaUpdate</literal> dans votre application :
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[Configuration cfg = ....;
|
|||
|
new SchemaUpdate(cfg).execute(false);]]></programlisting>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-7">
|
|||
|
<title>Utiliser Ant pour des mises <20> jour de sch<63>ma par incr<63>ment</title>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous pouvez appeler <literal>SchemaUpdate</literal> depuis le script Ant :
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<target name="schemaupdate">
|
|||
|
<taskdef name="schemaupdate"
|
|||
|
classname="org.hibernate.tool.hbm2ddl.SchemaUpdateTask"
|
|||
|
classpathref="class.path"/>
|
|||
|
|
|||
|
<schemaupdate
|
|||
|
properties="hibernate.properties"
|
|||
|
quiet="no">
|
|||
|
<fileset dir="src">
|
|||
|
<include name="**/*.hbm.xml"/>
|
|||
|
</fileset>
|
|||
|
</schemaupdate>
|
|||
|
</target>]]></programlisting>
|
|||
|
|
|||
|
<sect2 id="toolsetguide-s1-8" revision="1">
|
|||
|
<title>Validation du sch<63>ma</title>
|
|||
|
|
|||
|
<para>
|
|||
|
L'outil <literal>SchemaValidator</literal> validera que le sch<63>ma existant correspond <20> vos documents de mapping.
|
|||
|
Notez que le <literal>SchemaValidator</literal> d<>pends de l'API metadata de JDBC, il ne fonctionnera
|
|||
|
donc pas avec tous les drivers JDBC. Cet outil est extr<74>mement utile pour tester.
|
|||
|
</para>
|
|||
|
|
|||
|
<para>
|
|||
|
<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis>
|
|||
|
<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>
|
|||
|
</para>
|
|||
|
|
|||
|
<table frame="topbot">
|
|||
|
<title><literal>SchemaValidator</literal> Options de ligne de commande</title>
|
|||
|
<tgroup cols="2">
|
|||
|
<colspec colwidth="1.5*"/>
|
|||
|
<colspec colwidth="2*"/>
|
|||
|
<thead>
|
|||
|
<row>
|
|||
|
<entry>Option</entry>
|
|||
|
<entry>Description</entry>
|
|||
|
</row>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<row>
|
|||
|
<entry><literal>--naming=eg.MyNamingStrategy</literal></entry>
|
|||
|
<entry>Indique une <literal>NamingStrategy</literal></entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--properties=hibernate.properties</literal></entry>
|
|||
|
<entry>lit les propri<72>t<EFBFBD>s dela base de donn<6E>es depuis un fichier de propri<72>t<EFBFBD>s</entry>
|
|||
|
</row>
|
|||
|
<row>
|
|||
|
<entry><literal>--config=hibernate.cfg.xml</literal></entry>
|
|||
|
<entry>indique un fichier <literal>.cfg.xml</literal></entry>
|
|||
|
</row>
|
|||
|
</tbody>
|
|||
|
</tgroup>
|
|||
|
</table>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous pouvez inclure <literal>SchemaValidator</literal> dans votre application:
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[Configuration cfg = ....;
|
|||
|
new SchemaValidator(cfg).validate();]]></programlisting>
|
|||
|
|
|||
|
</sect2>
|
|||
|
|
|||
|
</sect2>
|
|||
|
<sect2 id="toolsetguide-s1-9">
|
|||
|
<title>Utiliser Ant pour la validation du Sch<63>ma</title>
|
|||
|
|
|||
|
<para>
|
|||
|
Vous pouvez appeler <literal>SchemaValidator</literal> depuis le script Ant:
|
|||
|
</para>
|
|||
|
|
|||
|
<programlisting><![CDATA[<target name="schemavalidate">
|
|||
|
<taskdef name="schemavalidator"
|
|||
|
classname="org.hibernate.tool.hbm2ddl.SchemaValidatorTask"
|
|||
|
classpathref="class.path"/>
|
|||
|
|
|||
|
<schemavalidator
|
|||
|
properties="hibernate.properties">
|
|||
|
<fileset dir="src">
|
|||
|
<include name="**/*.hbm.xml"/>
|
|||
|
</fileset>
|
|||
|
</schemaupdate>
|
|||
|
</target>]]></programlisting>
|
|||
|
|
|||
|
</sect2>
|
|||
|
</sect1>
|
|||
|
|
|||
|
</chapter>
|
|||
|
|