?? toolsetguide.html
字號:
</class></pre><pre class="programlisting"><property name="balance"> <column name="bal"> <comment>Balance in USD</comment> </column></property></pre><p> 结果是在生成的DDL中包含<tt class="literal">comment on table</tt> 或者 <tt class="literal">comment on column</tt>语句(假若支持的话)。 </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-3"></a>20.1.2. 运行该工具</h3></div></div><div></div></div><p> <tt class="literal">SchemaExport</tt>工具把DDL脚本写到标准输出,同时/或者执行DDL语句。 </p><p> <tt class="literal">java -cp </tt><span class="emphasis"><em>hibernate_classpaths</em></span> <tt class="literal">org.hibernate.tool.hbm2ddl.SchemaExport</tt> <span class="emphasis"><em>options mapping_files</em></span> </p><div class="table"><a name="d0e15398"></a><p class="title"><b>表 20.2. <tt class="literal">SchemaExport</tt>命令行选项</b></p><table summary="SchemaExport命令行选项" border="1"><colgroup><col><col></colgroup><thead><tr><th>选项</th><th>说明</th></tr></thead><tbody><tr><td><tt class="literal">--quiet</tt></td><td>不要把脚本输出到stdout</td></tr><tr><td><tt class="literal">--drop</tt></td><td>只进行drop tables的步骤</td></tr><tr><td><tt class="literal">--create</tt></td><td>只创建表</td></tr><tr><td><tt class="literal">--text</tt></td><td>不执行在数据库中运行的步骤</td></tr><tr><td><tt class="literal">--output=my_schema.ddl</tt></td><td>把输出的ddl脚本输出到一个文件</td></tr><tr><td><tt class="literal">--naming=eg.MyNamingStrategy</tt></td><td>选择一个命名策略(<tt class="literal">NamingStrategy</tt>)</td></tr><tr><td><tt class="literal">--config=hibernate.cfg.xml</tt></td><td>从XML文件读入Hibernate配置</td></tr><tr><td><tt class="literal">--properties=hibernate.properties</tt></td><td>从文件读入数据库属性</td></tr><tr><td><tt class="literal">--format</tt></td><td>把脚本中的SQL语句对齐和美化</td></tr><tr><td><tt class="literal">--delimiter=;</tt></td><td>为脚本设置行结束符</td></tr></tbody></table></div><p> 你甚至可以在你的应用程序中嵌入<tt class="literal">SchemaExport</tt>工具: </p><pre class="programlisting">Configuration cfg = ....;new SchemaExport(cfg).create(false, true);</pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-4"></a>20.1.3. 属性(Properties)</h3></div></div><div></div></div><p> 可以通过如下方式指定数据库属性: </p><div class="itemizedlist"><ul type="disc" compact><li><p>通过<tt class="literal">-D</tt><span class="emphasis"><em><property></em></span>系统参数</p></li><li><p>在<tt class="literal">hibernate.properties</tt>文件中</p></li><li><p>位于一个其它名字的properties文件中,然后用 <tt class="literal">--properties</tt>参数指定</p></li></ul></div><p> 所需的参数包括: </p><div class="table"><a name="d0e15511"></a><p class="title"><b>表 20.3. SchemaExport 连接属性</b></p><table summary="SchemaExport 连接属性" border="1"><colgroup><col><col></colgroup><thead><tr><th>属性名</th><th>说明</th></tr></thead><tbody><tr><td><tt class="literal">hibernate.connection.driver_class</tt></td><td>jdbc driver class</td></tr><tr><td><tt class="literal">hibernate.connection.url</tt></td><td>jdbc url</td></tr><tr><td><tt class="literal">hibernate.connection.username</tt></td><td>database user</td></tr><tr><td><tt class="literal">hibernate.connection.password</tt></td><td>user password</td></tr><tr><td><tt class="literal">hibernate.dialect</tt></td><td>方言(dialect)</td></tr></tbody></table></div></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-5"></a>20.1.4. 使用Ant(Using Ant)</h3></div></div><div></div></div><p> 你可以在你的Ant build脚本中调用<tt class="literal">SchemaExport</tt>: </p><pre class="programlisting"><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></pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-6"></a>20.1.5. 对schema的增量更新(Incremental schema updates)</h3></div></div><div></div></div><p> <tt class="literal">SchemaUpdate</tt>工具对已存在的schema采用"增量"方式进行更新。注意<tt class="literal">SchemaUpdate</tt>严重依赖于JDBC metadata API,所以它并非对所有JDBC驱动都有效。 </p><p> <tt class="literal">java -cp </tt><span class="emphasis"><em>hibernate_classpaths</em></span> <tt class="literal">org.hibernate.tool.hbm2ddl.SchemaUpdate</tt> <span class="emphasis"><em>options mapping_files</em></span> </p><div class="table"><a name="d0e15588"></a><p class="title"><b>表 20.4. <tt class="literal">SchemaUpdate</tt>命令行选项</b></p><table summary="SchemaUpdate命令行选项" border="1"><colgroup><col><col></colgroup><thead><tr><th>选项</th><th>说明</th></tr></thead><tbody><tr><td><tt class="literal">--quiet</tt></td><td>不要把脚本输出到stdout</td></tr><tr><td><tt class="literal">--text</tt></td><td>不把脚本输出到数据库</td></tr><tr><td><tt class="literal">--naming=eg.MyNamingStrategy</tt></td><td>选择一个命名策略 (<tt class="literal">NamingStrategy</tt>)</td></tr><tr><td><tt class="literal">--properties=hibernate.properties</tt></td><td>从指定文件读入数据库属性</td></tr><tr><td><tt class="literal">--config=hibernate.cfg.xml</tt></td><td>指定一个 <tt class="literal">.cfg.xml</tt>文件</td></tr></tbody></table></div><p> 你可以在你的应用程序中嵌入<tt class="literal">SchemaUpdate</tt>工具: </p><pre class="programlisting">Configuration cfg = ....;new SchemaUpdate(cfg).execute(false);</pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-7"></a>20.1.6. 用Ant来增量更新schema(Using Ant for incremental schema updates)</h3></div></div><div></div></div><p> 你可以在Ant脚本中调用<tt class="literal">SchemaUpdate</tt>: </p><pre class="programlisting"><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></pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-8"></a>20.1.7. Schema 校验</h3></div></div><div></div></div><p> <tt class="literal">SchemaValidator</tt>工具会比较数据库现状是否与映射文档“匹配”。注意,<tt class="literal">SchemaValidator</tt> 严重依赖于JDBC的metadata API,因此不是对所有的JDBC驱动都适用。这一工具在测试的时候特别有用。 </p><p> <tt class="literal">java -cp </tt><span class="emphasis"><em>hibernate_classpaths</em></span> <tt class="literal">org.hibernate.tool.hbm2ddl.SchemaValidator</tt> <span class="emphasis"><em>options mapping_files</em></span> </p><div class="table"><a name="d0e15680"></a><p class="title"><b>表 20.5. <tt class="literal">SchemaValidator</tt>命令行参数</b></p><table summary="SchemaValidator命令行参数" border="1"><colgroup><col><col></colgroup><thead><tr><th>选项</th><th>描述</th></tr></thead><tbody><tr><td><tt class="literal">--naming=eg.MyNamingStrategy</tt></td><td>选择一个命名策略 (<tt class="literal">NamingStrategy</tt>)</td></tr><tr><td><tt class="literal">--properties=hibernate.properties</tt></td><td>从文件中读取数据库属性</td></tr><tr><td><tt class="literal">--config=hibernate.cfg.xml</tt></td><td>指定一个<tt class="literal">.cfg.xml</tt>文件</td></tr></tbody></table></div><p> 你可以在你的应用程序中嵌入<tt class="literal">SchemaValidator</tt>: </p><pre class="programlisting">Configuration cfg = ....;new SchemaValidator(cfg).validate();</pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-9"></a>20.1.8. 使用Ant进行schema校验</h3></div></div><div></div></div><p> 你可以在Ant脚本中调用<tt class="literal">SchemaValidator</tt>: </p><pre class="programlisting"><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></pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="performance.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="example-parentchild.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">第 19 章 提升性能 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 第 21 章 示例:父子关系(Parent Child Relationships)</td></tr></table></div></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -