📄 toolsetguide.html
字号:
</class></pre><div class="table"><a name="schemattributes-summary"></a><p class="title"><b>表 21.1. Summary</b></p><table summary="Summary" border="1"><colgroup><col><col></colgroup><thead><tr><th>属性(Attribute)</th><th>值(Values)</th><th>解释(Interpretation)</th></tr></thead><tbody><tr><td><tt class="literal">length</tt></td><td>数字</td><td>字段长度/小数点精度</td></tr><tr><td><tt class="literal">not-null</tt></td><td><tt class="literal">true|false</tt></td><td>指明字段是否应该是非空的</td></tr><tr><td><tt class="literal">unique</tt></td><td><tt class="literal">true|false</tt></td><td>指明是否该字段具有惟一约束</td></tr><tr><td><tt class="literal">index</tt></td><td><tt class="literal">index_name</tt></td><td>指明一个(多字段)的索引(index)的名字</td></tr><tr><td><tt class="literal">unique-key</tt></td><td><tt class="literal">unique_key_name</tt></td><td>指明多字段惟一约束的名字(参见上面的说明)</td></tr><tr><td><tt class="literal">foreign-key</tt></td><td><tt class="literal">foreign_key_name</tt></td><td> 指明一个外键的名字,它是为关联生成的。 </td></tr><tr><td><tt class="literal">sql-type</tt></td><td><tt class="literal">column_type</tt></td><td> 覆盖默认的字段类型(只能用于<tt class="literal"><column></tt>属性) </td></tr><tr><td><tt class="literal">check</tt></td><td>SQL 表达式</td><td> 对字段或表加入SQL约束检查 </td></tr></tbody></table></div></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-3"></a>21.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="d0e14194"></a><p class="title"><b>表 21.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">--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">--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=x</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>21.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="d0e14292"></a><p class="title"><b>表 21.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>21.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>21.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="d0e14369"></a><p class="title"><b>表 21.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">--properties=hibernate.properties</tt></td><td>从指定文件读入数据库属性</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>21.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></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">第 20 章 提升性能 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 第 22 章 示例:父子关系(Parent Child Relationships)</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -