📄 myeclipse_hibernate_quickstart_zh_cn.html
字号:
<br>
<br>
如果你禁用这个选项(默认推荐用这种方式), 将会创建
<strong><key-many-to-one></strong> 元素来代替上面的生成内容. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Generate version and timestamp tags</strong> </p> </td>
<td>
<p align="left">
如果启用, 名为 "version" 和
"timestamp" 的列将会在生成的映射文件中作为
<strong><version></strong> 和
<strong><timestamp></strong> 标记出现. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Customized Type Mappings</strong> </p> </td>
<td>
<p align="left">
允许你来指定一个自定义的 JDBC 类型到
Hibernate 类型的转换, 使用 Length, Scale, Precision 和 Nullability
作为精度控制对应原来的 JDBC 类型. </p> </td>
</tr>
</tbody>
</table>
<br>
</li>
<li>再第 3 页页可以使用默认的设置, 选择 <strong>Finish</strong> 将启动反向工程处理.
<br>
<br><img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-mapping-3-table-annot.gif" align="left" border="0">
<img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-mapping-3-column-annot.gif" border="0"><br>
<font class="figureCaption">图 15. Hibernate Reverse Engineering 向导 - 第 3 页 </font>
<br>
<br>
<font size="3"><strong>表 6 - Hibernate Reverse Engineering 向导 - 第 3</strong></font><strong> 页</strong> <br>
<br>
<table summary="" border="1" cellpadding="1" cellspacing="1" width="600">
<tbody>
<tr>
<td>
<strong>选项</strong> </td>
<td>
<strong>描述</strong> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Class name<br> </strong> </p> </td>
<td>
<p align="left">
对应当前数据库表格的数据对象类的<em>完整名称</em>. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>ID Generator</strong> </p> </td>
<td>
<p align="left">
想要对当前表所使用的 ID 生成器. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>JDBC type</strong> </p> </td>
<td>
<p align="left">
对当前列所使用的 JDBC 类型覆盖. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Property name</strong> </p> </td>
<td>
<p align="left">
对应当前列所生成的属性名. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Hibernate type</strong> </p> </td>
<td>
<p align="left">
对应当前列的 Hibernate 类型. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Include referenced / referencing tables</strong> </p> </td>
<td>
<p align="left">
包含反向工程时当前数据库表引用的表格以及其它引用到当前表的数据库表. </p> </td>
</tr>
<tr>
<td>
<p align="left">
<strong>Generate support for ListedTable(fk)->UnlistedTable and UnlistedTable(fk)->ListedTable</strong> </p> </td>
<td>
<p align="left">
生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示. </p> </td>
</tr>
</tbody>
</table></li>
</ol>
<blockquote style="margin-right: 0px;" dir="ltr">
<p>在这个向导完成之后将会进行下面所列的操作:</p>
</blockquote>
<div style="margin-left: 2em;">
<ul>
<li>
<div>创建类 <font face="Courier New">AbstractEchoMessage</font>
. 这个抽象类提供了所需的 Hibernate 兼容的功能例如 public 的读取器和设置器方法, 这些方法对应的持久化属性和 <font face="Courier New">ECHO_MESSAGE</font> 数据库表格中的列相对应. </div>
</li><li>
<div>创建了一个 <font face="Courier New">EchoMessage</font>
Java 类, 是 <font face="Courier New">AbstractEchoMessage</font> 类的一个具体的子类.<font face="Courier New"> EchoMessage</font> 的目的是为了被修改后提供额外的业务和验证逻辑, 并且不会被后续的生成代码过程所覆盖.</div>
</li><li>
<div>创建了 <font face="Courier New">EchoMessage.hbm.xml</font>
Hibernate 映射描述符. 这个文件指示 Hibernate 如何将 <font face="Courier New">EchoMessage</font> Java 类和 ECHO_MESSAGE 数据库表格中的数据相互映射.</div>
</li><li>
<div>
在文件
<font face="Courier New">hibernate.cfg.xml</font> 中注册
<font face="Courier New">EchoMessage.hbm.xml</font> 映射描述符. </div>
</li>
<li>
创建了 Java 类
<font face="Courier New">EchoMessageDAO</font>. 这个类提供了对 <font face="Courier New">EchoMessage</font> 数据对象类的方便的访问和操作.</li>
<li>创建 <font face="Courier New">IBaseHibernateDAO</font> 接口和
<font face="Courier New">BaseHibernateDAO</font> 类.
这些类对基本的 DAO 来说是必要的, 因为它使用了添加 Hibernate 功能时候所生成的 Session 工厂类(<font face="Courier New">com.genuitec.hibernate.HibernateSessionFactory</font>)来获取 Hibernate 会话. </li>
</ul>
</div>
<blockquote style="margin-right: 0px;" dir="ltr">
<p class="normal">图 15 高亮显示了所生成的类, 关键方法和映射文件, 以及被添加到 hibernate.cfg.xml 文件中的对生成的映射文件的引用.</p>
<p class="normal"><img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-workbench3-annot.gif" border="0"><br>
<font class="figureCaption">图 15. Hibernate 反向工厂向导执行结束后更新过的项目内容</font></p>
</blockquote>
<h3>5.5 <a name="5-5"></a>使用模版调整生成更好的代码</h3>
<p>
<br>
</p><ul>
<li>下载并解压缩<a href="http://127.0.0.1:61071/help/topic/com.genuitec.myeclipse.doc/html/quickstarts/hibernate/myeclipse_templates_5.5GA.zip">这个</a>文件到你的电脑的文件系统上.</li>
<li>按照 README.txt 文件中的说明来自定义这个模版.</li>
<li>调用反向工程向导, 在第 1 页选择启用 <strong>Use custom templates</strong>
选项, 然后将 <strong>Template directory</strong> 指向到包含模版树的文件夹e.</li>
</ul>
<p></p>
<h3>5.6 <a name="5-6"></a>使用自定义反向工程策略</h3>
<p>
<br>
</p><ol>
<li>向你的项目中添加 <strong>MyEclipse Persistence Tools</strong> 类库.
<br>
<ul>
<li>右键点击你的项目然后选择 <strong>Properties</strong>.</li>
<li>在 <strong>Java Build Path</strong> 页面, 在 <strong>Libraries</strong> 面板下选择 <strong>Add Library...</strong>.</li>
<li>选择 <strong>MyEclipse Libraries</strong> ,接着选中 <strong>MyEclipse Persistence Tools</strong>.</li>
<li>点击 <strong>Finish</strong>.</li>
</ul>
<img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-add-library-annot.gif">
<img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-add-library-me-ht-annot.gif">
<br>
<font class="figureCaption">图 16. 添加 MyEclipse Persistence Tools 类库</font><br><br></li>
<li>在你的项目中创建一个新类, 让这个类继承自 <strong>org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy</strong> 类.</li>
<li>定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法, 例如, <strong>columnToPropertyName</strong>.
<br>
这里是一个例子, 将在所有生成的属性前添加一个 "ME_" 前缀.<br>
<table class="code" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="codeHeader">
MyStrategy.java </td>
</tr>
<tr>
<!-- start source code -->
<td align="left" nowrap="nowrap" valign="top">
<code>
<font color="#7f0055"><b>package </b> </font><font color="#000000">com.genuitec.hibernate;</font>
<br>
<br>
<font color="#7f0055"><b>import </b> </font><font color="#000000">org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;</font>
<br>
<font color="#7f0055"><b>import </b> </font><font color="#000000">org.hibernate.cfg.reveng.ReverseEngineeringStrategy;</font>
<br>
<font color="#7f0055"><b>import </b> </font><font color="#000000">org.hibernate.cfg.reveng.TableIdentifier;</font>
<br>
<br>
<font color="#7f0055"><b>public class</b> </font><font color="#000000">MyStrategy </font><font color="#7f0055"><b>extends</b>
</font><font color="#000000"> DelegatingReverseEngineeringStrategy {</font>
<br>
<br>
<font color="#ffffff"> </font><font color="#7f0055"><b>public</b>
</font><font color="#000000">MyStrategy</font><font color="#000000">(</font><font color="#000000">ReverseEngineeringStrategy</font><font color="#000000"> strategy</font><font color="#000000">) {</font>
<font color="#ffffff"> </font><br>
<font color="#ffffff"> </font><font color="#7f0055"><b>super</b>
</font><font color="#000000">(strategy);</font>
<font color="#ffffff"> </font><br>
<font color="#ffffff"> </font><font color="#000000">}</font><br><br></code><code><font color="#7f0055"> <b>public</b> </font><font color="#000000">String columnToPropertyName(TableIdentifier table, String columnName) {</font><font color="#000000"></font>
<font color="#ffffff"> </font><br>
<font color="#ffffff"> </font><font color="#7f0055"><b>return</b> </font><font color="#000000"><font color="#2a00ff">"ME_"</font> + super.columnToPropertyName(table, columnName);</font>
<font color="#ffffff"> </font><br>
<font color="#ffffff"> </font><font color="#000000">}</font>
</code><code><br>
<font color="#ffffff"></font>
<br>
<font color="#000000">}</font>
</code> </td>
<!-- end source code -->
</tr>
</tbody>
</table>
<font class="figureCaption">图 17. MyStrategy.java
源代码清单</font><br><br></li>
<li>在反向工程向导的第 2 页, 选中刚才所创建的类
<br><img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-re-strategy-annot.gif">
<br>
<font class="figureCaption">图 18. 指定反向工程策略</font></li>
</ol>
<p></p>
<h3>5.7 <a name="5-7"></a>编辑映射文件</h3>
<p>
<br>
MyEclipse 包含了定制过的 XML 编辑器来专门用于修改 Hibernate
映射文件 (*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开. 你也可以通过右键点击文件然后选择 <strong>Open With > MyEclipse Hibernate Mapping Editor.</strong>
<br>
<br>
<strong>功能</strong>
</p>
<ul>
<li>超链接浏览到引用到的类和属性.</li>
<li>类名自动完成提示.
</li>
<li>属性名自动完成提示.
</li>
<li>映射文件元素, 属性和值的内容完成提示.
<br>
<br><img alt="" src="MyEclipse_Hibernate_Quickstart_zh_CN_files/hibernate-mapping-editor.gif">
<br>
<font class="figureCaption">图 19. Hibernate 映射文件编辑器</font>
</li>
</ul>
<p></p>
<p class="normal"><strong><a href="#top">返回页首</a></strong></p>
<hr>
<h2>6. <a name="hql"></a>使用 HQL 编辑器</h2>
<p class="normal">
<br>
MyEclipse 包含了一个 Hibernate 查询语言编辑器以及几个视图, 允许你根据当前的 Hibernate 配置来执行 HQL 查询语句.
<br>
<br>
<strong>功能</strong>
</p>
<ul>
<li>内容自动完成提示. </li>
<li><strong>Hibernate Dynamic Query Translator</strong> 在敲入 HSQL 查询语句时查看翻译后的 SQL 语句.
</li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -