📄 toolsetguide.html
字号:
你可以在你的Ant build脚本中调用<tt class="literal">SchemaExport</tt>: </p><pre class="programlisting"><target name="schemaexport"> <taskdef name="schemaexport" classname="net.sf.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>15.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">net.sf.hibernate.tool.hbm2ddl.SchemaUpdate</tt> <span class="emphasis"><em>options mapping_files</em></span> </p><div class="table"><a name="d0e9431"></a><p class="title"><b>表 15.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>15.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="net.sf.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 class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="toolsetguide-s2"></a>15.2. 代码生成(Code Generation)</h2></div></div><div></div></div><p> Hibernate代码生成器可以用来为Hibernate映射文件生成Java实现类的骨架。这个工具在Hibernate Extensions发行包中提供(需要单独下载)。 </p><p> <tt class="literal">hbm2java</tt>解析映射文件,生成可工作的Java源代码文件。使用<tt class="literal">hbm2java</tt>,你可以“只”提供<tt class="literal">.hbm</tt>文件,不用担心要去手工编写Java文件。 </p><p> <tt class="literal">java -cp</tt> <span class="emphasis"><em>hibernate_classpaths</em></span> <tt class="literal">net.sf.hibernate.tool.hbm2java.CodeGenerator</tt> <span class="emphasis"><em> options mapping_files</em></span> </p><div class="table"><a name="d0e9505"></a><p class="title"><b>表 15.5. 代码生成器命令行选项</b></p><table summary="代码生成器命令行选项" border="1"><colgroup><col><col></colgroup><thead><tr><th>选项</th><th>说明</th></tr></thead><tbody><tr><td><tt class="literal">--output=</tt><span class="emphasis"><em>output_dir</em></span></td><td>生成代码输出的根目录</td></tr><tr><td><tt class="literal">--config=</tt><span class="emphasis"><em>config_file</em></span></td><td>可选的hvm2java配置文件</td></tr></tbody></table></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s2-1"></a>15.2.1. 配置文件(可选)</h3></div></div><div></div></div><p> 配置文件提供了配置生成源代码的多个"渲染器(renders)"的途径,也可以声明在全局范围生效的<tt class="literal"><meta></tt>属性。详情请参见<tt class="literal"><meta></tt>属性的部分。 </p><pre class="programlisting"><codegen> <meta attribute="implements">codegen.test.IAuditable</meta> <generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer"/> <generate package="autofinders.only" suffix="Finder" renderer="net.sf.hibernate.tool.hbm2java.FinderRenderer"/></codegen></pre><p> 这个配置文件声明了一个全局的meta(元)属性“implements”,指定了两个渲染器,默认渲染器(BadicRender)和生成Finder(参见下面的“基本Finder 生成器”)的渲染器。 </p><p> 定义第二个渲染器需要一个包名和后缀属性。 </p><p> 包名属性指定生成后的源代码应该保存的位置,覆盖在<tt class="literal">.hbm</tt>文件中指定的包范围。 </p><p> 后缀属性指定生成的文件的后缀。比如说,如果有一个<tt class="literal">Foo.java</tt>文件,应该变成<tt class="literal">FooFinder.java</tt>。 </p><p> 也可以通过在<tt class="literal"><generate></tt>元素上增加<tt class="literal"><param></tt>属性来传递特别的参数到渲染器去。 </p><p> hbm2java目前支持一个这样的参数,名字是<tt class="literal">generate-concrete-empty-classes</tt>来通知BasicRender对你所有的类都只生成空的具体类来继承它们。下列config.xml演示了这个功能 </p><pre class="programlisting"> <codegen> <generate prefix="Base" renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer"/> <generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer"> <param name="generate-concrete-empty-classes">true</param> <param name="baseclass-prefix">Base</param> </generate> </codegen></pre><p> 注意,这个config.xml定义了两个渲染器。一个生成Base类,第二个只生成空的具体类。 </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s2-2"></a>15.2.2. <tt class="literal">meta</tt>属性</h3></div></div><div></div></div><p> <tt class="literal"><meta></tt>标签时对<tt class="literal">hbm.xml</tt>文件进行的简单注解,工具可以用这个位置来保存/阅读和Hibernate内核不是直接相关的一些信息。 </p><p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -