📄 toolsetguide.html
字号:
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>第 21 章 工具箱指南</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - 符合Java习惯的关系数据库持久化"><link rel="up" href="index.html" title="HIBERNATE - 符合Java习惯的关系数据库持久化"><link rel="previous" href="performance.html" title="第 20 章 提升性能
 "><link rel="next" href="example-parentchild.html" title="第 22 章 示例:父子关系(Parent Child Relationships)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">第 21 章 工具箱指南</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="performance.html">上一页</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="example-parentchild.html">下一页</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="toolsetguide"></a>第 21 章 工具箱指南</h2></div></div><div></div></div><p> 可以通过一系列Eclipse插件、命令行工具和Ant任务来进行与Hibernate关联的转换。 </p><p> 除了Ant任务外,当前的<span class="emphasis"><em>Hibernate Tools</em></span>也包含了Eclipse IDE的插件,用于与现存数据库的逆向工程。 </p><div class="itemizedlist"><ul type="disc"><li><p> <span class="emphasis"><em>Mapping Editor:</em></span> Hibernate XML映射文件的编辑器,支持自动完成和语法高亮。它也支持对类名和属性/字段名的语义自动完成,比通常的XML编辑器方便得多。 </p></li><li><p> <span class="emphasis"><em>Console:</em></span> Console是Eclipse的一个新视图。除了对你的console配置的树状概览,你还可以获得对你持久化类及其关联的交互式视图。Console允许你对数据库执行HQL查询,并直接在Eclipse中浏览结果。 </p></li><li><p> <span class="emphasis"><em>Development Wizards:</em></span> 在Hibernate Eclipse tools中还提供了几个向导;你可以用向导快速生成Hibernate 配置文件(cfg.xml),你甚至还可以同现存的数据库schema中反向工程出POJO源代码与Hibernate 映射文件。反向工程支持可定制的模版。 </p></li><li><p> <span class="emphasis"><em>Ant Tasks:</em></span> </p></li></ul></div><p> 要得到更多信息,请查阅 <span class="emphasis"><em>Hibernate Tools</em></span> 包及其文档。 </p><p> 同时,Hibernate主发行包还附带了一个集成的工具(它甚至可以在Hibernate“内部”快速运行)<span class="emphasis"><em>SchemaExport</em></span> ,也就是 <tt class="literal">hbm2ddl</tt>。 </p><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="toolsetguide-s1"></a>21.1. Schema自动生成(Automatic schema generation)</h2></div></div><div></div></div><p> 可以从你的映射文件使用一个Hibernate工具生成DDL。 生成的schema包含有对实体和集合类表的完整性引用约束(主键和外键)。涉及到的标示符生成器所需的表和sequence也会同时生成。 </p><p> 在使用这个工具的时候,你<span class="emphasis"><em>必须</em></span> 通过<tt class="literal">hibernate.dialet</tt>属性指定一个SQL<tt class="literal">方言(Dialet)</tt>,因为DDL是与供应商高度相关的。 </p><p> 首先,要定制你的映射文件,来改善生成的schema。 </p><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="toolsetguide-s1-2"></a>21.1.1. 对schema定制化(Customizing the schema)</h3></div></div><div></div></div><p> 很多Hibernate映射元素定义了一个可选的<tt class="literal">length</tt>属性。你可以通过这个属性设置字段的长度。 (如果是Or, for numeric/decimal data types, the precision.) </p><p> 有些tag接受<tt class="literal">not-null</tt>属性(用来在表字段上生成<tt class="literal">NOT NULL</tt>约束)和<tt class="literal">unique</tt>属性(用来在表字段上生成<tt class="literal">UNIQUE</tt>约束)。 </p><p> 有些tag接受<tt class="literal">index</tt>属性,用来指定字段的index名字。<tt class="literal">unique-key</tt>属性可以对成组的字段指定一个组合键约束(unit key constraint)。目前,<tt class="literal">unique-key</tt>属性指定的值<span class="emphasis"><em>并不会</em></span>被当作这个约束的名字,它们只是在用来在映射文件内部用作区分的。 </p><p> 示例: </p><pre class="programlisting"><property name="foo" type="string" length="64" not-null="true"/><many-to-one name="bar" foreign-key="fk_foo_bar" not-null="true"/><element column="serial_number" type="long" not-null="true" unique="true"/></pre><p> 另外,这些元素还接受<tt class="literal"><column></tt>子元素。在定义跨越多字段的类型时特别有用。 </p><pre class="programlisting"><property name="foo" type="string"> <column name="foo" length="64" not-null="true" sql-type="text"/></property><property name="bar" type="my.customtypes.MultiColumnType"/> <column name="fee" not-null="true" index="bar_idx"/> <column name="fi" not-null="true" index="bar_idx"/> <column name="fo" not-null="true" index="bar_idx"/></property></pre><p> <tt class="literal">sql-type</tt>属性允许用户覆盖默认的Hibernate类型到SQL数据类型的映射。 </p><p> <tt class="literal">check</tt>属性允许用户指定一个约束检查。 </p><pre class="programlisting"><property name="foo" type="integer"> <column name="foo" check="foo > 10"/></property><class name="Foo" table="foos" check="bar < 100.0"> ... <property name="bar" type="float"/>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -