📄 myeclipsehibernate入门视频中文版.htm
字号:
</table>
<p>现在数据库表格已经被自动反向工程到我们的项目中了, MyEclipse 中有很多种 Hibernate 工具可以使用(甚至不需要写代码!). 第一个要看的工具是 HSQL 编辑器.</p>
<p> HQL 编辑器, 以及其它的 HQL 视图都位于 Hibernate 透视图中, 可以协助开发, 执行或者测试 HQL 查询. HQL 是一种类似于 SQL的语言, 叫做
"Hibernate 查询语言". 它可以从某种意义上看作简化过的 SQL, 但是用的是对象名字和属性来代替数据库表和字段的名字. 可以在位于 <a title="Resources"
href="#Resources">资源</a> 部分的 Hibernate 参考文档中来详细的学习 HQL. </p>
<p>使用 HQL 编辑器你可以即时编写 HQL 然后执行.
编辑器通过使用 MyEclipse 从数据库反向工程所生成的对象, 把 HQL 查询翻译成 SQL(显示于界面的右下侧), 然后加以执行.
查询结果将会返回为 Java 对象然后显示在界面的左下侧. 让我们来看看工作过程:<br>
</p>
<table class="screencast">
<TBODY>
<tr>
<td class="screencast">
<object id="Captivate1"
codeBase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
height="600" width="800" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="screencasts/hql_editor.swf">
<param name="quality" value="high">
<param name="loop" value="0"><embed src="screencasts/hql_editor.swf" width="800" height="600" loop="0" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" menu="false">
</object>
</td>
</tr>
<tr>
<td><font class="figure">图 4. 使用 HQL 编辑器和 HQL 视图</font> <br>
</td>
</tr>
</TBODY>
</table>
</td>
</tr>
<tr>
<td vAlign="top"><h1>7. <a name="WritingRunning">编写和运行 Hibernate 代码</a> </h1>
<p>尽管熟悉 MyEclipse 提供的工具很重要, 不过我们只需要了解部分工具就行了, 所以让我们写点自己的代码测试吧! </p>
<p>像我们以前提到的那样, 使用 MyEclipse 的一个最大的好处就是可以生成所有的模式化的 Hibernate 映射和 DAO 的代码. 这意味着反向工程数据库之后你就可以开始编写自己的程序来读取, 写入以及更新数据库中的数据了. </p>
<p>在这个教程里面我们讲编写一些简单的方法, 依次执行下面的3个操作:
<ol>
<li>创建一个新 <em>User</em> 然后把他添加到数据库中 </li>
<li>根据主键从数据库中加载 <em>User</em> , 并打印出他的信息 </li>
<li>修改 <em>User</em> 的值, 更新数据库中的记录然后打印出来修改过的值进行验证 </li>
</ol>
<p>这三个方法 ( <em>addUser, listUser, changeUser</em>) 将在新建的类里面的 <em>main</em>
方法中调用. 要更好的理解这个 Hibernate 代码如何编写的, 让我们创建这个类, 将方法复制到类里面(使用复制和粘贴)然后一行一行的检查: <br>
</p>
<table class="screencast">
<TBODY>
<tr>
<td class="screencast">
<object id="Captivate1"
codeBase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
height="600" width="800" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="screencasts/example_code.swf">
<param name="quality" value="high">
<param name="loop" value="0"><embed src="screencasts/example_code.swf" width="800" height="600" loop="0" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" menu="false">
</object>
</td>
</tr>
<tr>
<td><font class="figure">图 5. 创建一个使用我们所生成的 Hibernate 代码的新类</font> <br>
</td>
</tr>
</TBODY>
</table>
<p>看过代码后我们可以很直接的理解所有的事情. 我们使用 MyEclipse 为我们生成的
DAO 类来获取, 更新以及保存我们的对象到数据库中, MyEclipse/Hibernate 来关心所有的其它细节的实现. 没有比这更简单的了. </p>
<p>现在到了有趣的地方了, 让我们运行代码并且看看是不是真正的进行了正确的操作: </p>
<table class="screencast">
<TBODY>
<tr>
<td class="screencast">
<object id="Captivate1"
codeBase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
height="600" width="800" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="screencasts/running_example_code.swf">
<param name="quality" value="high">
<param name="loop" value="0"><embed src="screencasts/running_example_code.swf" width="800" height="600" loop="0"
quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" menu="false">
</object>
</td>
</tr>
<tr>
<td><font class="figure">图 6. 运行我们的示例 Hibernate 代码</font> <br>
</td>
</tr>
</TBODY>
</table>
<p>真棒! 工作的结果完全符合我们的预期! 我们使用 HQL Editor 来查询数据库并确保我们的用户保存成功. 另外, 我们还可以很容易的切换到 Database 透视图然后查询数据库来检查表格中的用户记录. <br>
</td>
</tr>
<tr>
<td vAlign="top"><h1>8. <a name="Conclusion">小结</a> </h1>
<p>尽管教程里面的例子非常简单, 但是涉及的技术和信息对我们理解 Hibernate 和 MyEclipse 都是至关重要的. 这个教程中所涉及的基础知识对任何使用 Hibernate 的项目都是有效的: 将对象映射到数据库的核心思想. 在这些基本的功能正常工作后, 你可以任意根据需要来增强, 扩展或者改变应用程序, 而 MyEclipse 将继续帮助你开发和扩展. <br>
</p>
<p>希望本教程对你有所帮助. 如果你对本教程有任何建议或者问题, 请 <a
href="#Feedback">告诉我们</a>. 用户的反馈对我们编写这些教材是非常用价值的. <br>
</td>
</tr>
<tr>
<td vAlign="top"><h1>9. <a name="FAQ">常见问题</a> </h1>
<ol>
<li><strong> Hibernate 和 <a title="EJB 3"
href="http://jcp.org/en/jsr/detail?id=220">EJB 3</a> / <a title="JPA"
href="http://java.sun.com/javaee/overview/faq/persistence.jsp">JPA</a> 相比如何?</strong>
<ul>
<li>Hibernate 3.2 事实上兼容 JPA, 实现了所有的标注, 可以自动化, 很容易的使用 JPA 来开发. 所以不用使用 JPA 的商业实现, 你可以保持所有的类文件中的标准 JPA 标注不变, 而在底层实现选择 Hibernate(译者注: JPA 是接口/规范, Hibernate 是一种实现, Hibernate implements JPA, 这种策略和 JDBC, Web 容器等等的设计思想是一致的). </li>
</ul>
</li>
<li><strong> Hibernate 是否能支持大型应用?</strong>
<ul>
<li>当然可以. 事实上 Hibernate 的两位创建者都拥有大型企业应用的顾问经验. Hibernate 展现了他们对于应用程序持久层所持的观点. 几年之前, Gavin King, 向开源社区发出挑战来寻找手工调优过的执行速度远远超过 Hibernate 所自动生成的SQL, 这说明 Hibernate 框架非常关注于功能, 易用性和效率. </li>
</ul>
</li>
<li><strong>我是否需要在程序里包含所有的 Hibernate 类库? 文件太多了!</strong>
<ul>
<li>不需要. Hibernate 是个非常复杂的框架, 基于大量的第三方框架来实现. 你不需要很多 JAR 文件, 这取决于你打算如何使用 Hibernate . Hibernate 发布包里面的 /lib 目录下有个文件叫 README, 这个文件解释了每个类库的作用, 如果你想自己控制发布哪些文件, 可以参考这个文件. </li>
</ul>
</li>
<li><strong>Hibernate 中的"Session" 是什么东西? 为什么我必须和它打交道?</strong>
<ul>
<li>Hibernate 在简单的外表之下隐藏着许多 "魔法" . 一部分功能用来监视映射过的对象的状态, 当发现它们被修改过后(例如调用了设置器方法), 然后及时保存更改过的值到数据库中. 在小系统中你可以想象 Hibernate 一次管理所有对象, 但是在很大的企业系统中可能会有上百万的映射对象需要一次载入, 然而单台电脑将不会有足够的内存或者 CPU 周期来处理这么多的实体. 这就是"session(会话)" 所起的作用. Hibernate 会话打开后, 它就表示一个处理所有对象的容器. 大多数人发现可以使会话维持一个工作事务的工作时间, 尽管对于性能优先的应用程序来说, 会话维持的时间太短会带来反复创建所造成的开销. 另一种 Hibernate 会话设计是使用一个 Servlet 过滤器, 当一个新 HTTP 会话创建时打开 Hibernate 会话, 当 HTTP 会话销毁时来关闭 Hibernate 会话. 对于大多数中等大小的 web 应用程序, 运行在相当好的电脑上这将会在性能和内存需求间获得一个很好的平衡点. 尽管你一直都意识到什么对象从数据库加载和保存, 然而当 session 保持不关闭的情况下, 这些对象有可能会留在内存中(译者注: 也即占用额外的系统内存或者说造成内存泄漏). </li>
</ul>
</li>
<li><strong>MyEclipse FAQ</strong> <ul>
<li><a title="MyEclipse Forum FAQ"
href="http://myeclipseide.com/PNphpBB2+file-viewforum-f-35.html" target="_blank">常见问题 (FAQ) 支持论坛</a> </li>
</ul>
</li>
</ol>
</td>
</tr>
<tr>
<td vAlign="top"><h1>10. <a name="Resources">资源</a> </h1>
<p>下面是一些资源的链接,
我们希望能帮助解答您在阅读本教程中遇到的大部分关于 Hibernate
的问题:</p>
<h2>文件 </h2>
<ul>
<li><a title="Introduction to Hibernate Project"
href="resources/IntroductionToHibernateProject.zip">Hibernate 入门项目文件</a> (本教程所使用的项目源代码) </li>
<li><a title="Create Table SQL Script"
href="resources/create_table_user.sql"> <em>user</em>
table 的建表 SQL 语句</a> <br>
</li>
</ul>
<h2>参考 </h2>
<ul>
<li>Hibernate 3.2 参考文档 ( <a title="Hibernate 3.2 Reference"
href="http://www.hibernate.org/hib_docs/v3/reference/en/html/">HTML</a>) ( <a
title="Hibernate 3.2 Reference"
href="http://www.hibernate.org/elqNow/elqRedir.htm?ref=http://www.hibernate.org/hib_docs/v3/reference/en/pdf/hibernate_reference.pdf">PDF</a>)
<br>
</li>
<li><a title="Hibernate 3.x Javadoc" href="http://www.hibernate.org/hib_docs/v3/api/">Hibernate
3.x Javadoc</a> </li>
<li>Hibernate 3.2 标注 参考文档 ( <a
title="Hibernate Annotations Reference"
href="http://www.hibernate.org/hib_docs/annotations/reference/en/html/">HTML</a>) ( <a
title="Hibernate Annotations Reference"
href="http://www.hibernate.org/elqNow/elqRedir.htm?ref=http://www.hibernate.org/hib_docs/annotations/reference/en/pdf/hibernate_annotations.pdf">PDF</a>)
<br>
</li>
<li><a title="EJB3 / JPA Javadoc" href="http://www.hibernate.org/hib_docs/ejb3-api/">EJB3 /
JPA Javadoc</a> (Hibernate 是 JPA 规范的兼容实现) </li>
<li><a title="Hibernate Wiki" href="http://www.hibernate.org/37.html">Hibernate Wiki</a> </li>
</ul>
<h2>基础知识 <br>
</h2>
<ul>
<li><a title="The Road to Hibernate" href="http://www.gloegl.de/5.html">Hibernate 教程 -
Hibernate 之路</a> </li>
<li><a title="Complete Hibernate Tutorial"
href="http://www.roseindia.net/hibernate/index.shtml">完整的 Hibernate 教程</a> </li>
<li><a title="Official External Hibernate Links" href="http://www.hibernate.org/78.html#A3">官方的 Hibernate 外部链接</a> </li>
</ul>
</td>
</tr>
<tr>
<td vAlign="top"><h1>11. <a name="Feedback">反馈</a> </h1>
<p>我们非常希望听到您的声音! 如果你喜欢本教程,
有建议甚至错误修正建议, 请告诉我们. 我们通过 <a
href="http://www.myeclipseide.com/PNphpBB2+file-viewforum-f-6.html"
title="Documentation Forum">文档论坛</a> 来跟踪所有用户对学习资料的建议.
请告诉我们您正在评论的是哪份 MyEclipse
资料这样我们可以更快的查明出现问题的章节. </td>
</tr>
</TBODY>
</table>
<p><br>
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -