﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-清睛仪明-文章分类-Hibernate</title><link>http://www.blogjava.net/msmary/category/26453.html</link><description>书山有路勤为径，学海无涯苦作舟</description><language>zh-cn</language><lastBuildDate>Wed, 10 Oct 2007 13:00:44 GMT</lastBuildDate><pubDate>Wed, 10 Oct 2007 13:00:44 GMT</pubDate><ttl>60</ttl><item><title>Hibernate包作用详解</title><link>http://www.blogjava.net/msmary/articles/151868.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Wed, 10 Oct 2007 12:55:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/151868.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/151868.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/151868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/151868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/151868.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体">Hibernate一共包括了23个jar包，令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用，便于你在应用中根据自己的需要进行取舍。</span></p>
<p><span style="font-family: 宋体">　　下载Hibernate，例如2.0.3稳定版本，解压缩，可以看到一个hibernate2.jar和lib目录下有22个jar包：</span></p>
<p><span style="font-family: 宋体">　　hibernate2.jar:</span></p>
<p><span style="font-family: 宋体">　　Hibernate的库，没有什么可说的，必须使用的jar包</span></p>
<p><span style="font-family: 宋体">　　cglib-asm.jar:</span></p>
<p><span style="font-family: 宋体">　　CGLIB库，Hibernate用它来实现PO字节码的动态生成，非常核心的库，必须使用的jar包</span></p>
<p><span style="font-family: 宋体">　　dom4j.jar:</span></p>
<p><span style="font-family: 宋体">　　dom4j是一个Java的XML API，类似于jdom，用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件，可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章，对主流的Java XML API进行的性能、功能和易用性的评测，dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j，直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML，特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包，Hibernate用它来读写配置文件。</span></p>
<p><span style="font-family: 宋体">　　odmg.jar:</span></p>
<p><span style="font-family: 宋体">　　ODMG是一个ORM的规范，Hibernate实现了ODMG规范，这是一个核心的库，必须使用的jar包。</span></p>
<p><span style="font-family: 宋体">　　commons-collections.jar：</span></p>
<p><span style="font-family: 宋体">　　Apache Commons包中的一个，包含了一些Apache开发的集合类，功能比java.util.*强大。必须使用的jar包。</span></p>
<p><span style="font-family: 宋体">　　commons-beanutils.jar：</span></p>
<p><span style="font-family: 宋体">　　Apache Commons包中的一个，包含了一些Bean工具类类。必须使用的jar包。</span></p>
<p><span style="font-family: 宋体">　　commons-lang.jar:</span></p>
<p><span style="font-family: 宋体">　　Apache Commons包中的一个，包含了一些数据类型工具类，是java.lang.*的扩展。必须使用的jar包。</span></p>
<p><span style="font-family: 宋体">　　commons-logging.jar:</span></p>
<p><span style="font-family: 宋体">　　Apache Commons包中的一个，包含了日志功能，必须使用的jar包。这个包本身包含了一个Simple Logger，但是功能很弱。在运行的时候它会先在CLASSPATH找log4j，如果有，就使用log4j，如果没有，就找JDK1.4带的java.util.logging，如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾，当初Apache极力游说Sun把log4j加入JDK1.4，然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了，因此拒绝了Apache的要求，使用自己的java.util.logging，这个包的功能比log4j差的很远，性能也一般。</span></p>
<p><span style="font-family: 宋体">　　后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序，底层的Logger是可以切换的，你可以选择log4j，java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j，因为log4j性能很高，log输出信息时间几乎等于System.out，而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件，你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。</span></p>
<p><span style="font-family: 宋体">　　使用Hibernate必须的jar包就是以上的这几个，剩下的都是可选的。</span></p>
<p><span style="font-family: 宋体">　　ant.jar:</span></p>
<p><span style="font-family: 宋体">　　Ant编译工具的jar包，用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码，那么就没有什么用，可选的jar包</span></p>
<p><span style="font-family: 宋体">　　optional.jar：</span></p>
<p><span style="font-family: 宋体">　　Ant的一个辅助包。</span></p>
<p><span style="font-family: 宋体">　　c3p0.jar：</span></p>
<p><span style="font-family: 宋体">　　C3PO是一个数据库连接池，Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池，就需要这个jar包。</span></p>
<p><span style="font-family: 宋体">　　proxool.jar：</span></p>
<p><span style="font-family: 宋体">　　也是一个连接池，同上。</span></p>
<p><span style="font-family: 宋体">　　commons-pool.jar, commons-dbcp.jar:</span></p>
<p><span style="font-family: 宋体">　　DBCP数据库连接池，Apache的Jakarta组织开发的，Tomcat4的连接池也是DBCP。</span></p>
<p><span style="font-family: 宋体">　　实际上Hibernate自己也实现了一个非常非常简单的数据库连接池，加上上面3个，你实际上可以在Hibernate上选择4种不同的数据库连接池，选择哪一个看个人的偏好，不过DBCP可能更通用一些。另外强调一点，如果在EJB中使用Hibernate，一定要用App Server的连接池，不要用以上4种连接池，否则容器管理事务不起作用。</span></p>
<p><span style="font-family: 宋体">　　connector.jar:</span></p>
<p><span style="font-family: 宋体">　　JCA 规范，如果你在App Server上把Hibernate配置为Connector的话，就需要这个jar。不过实际上一般App Server肯定会带上这个包，所以实际上是多余的包。</span></p>
<p><span style="font-family: 宋体">　　jaas.jar:</span></p>
<p><span style="font-family: 宋体">　　JAAS是用来进行权限验证的，已经包含在JDK1.4里面了。所以实际上是多余的包。</span></p>
<p><span style="font-family: 宋体">　　jcs.jar：</span></p>
<p><span style="font-family: 宋体">　　如果你准备在Hibernate中使用JCS的话，那么必须包括它，否则就不用。</span></p>
<p><span style="font-family: 宋体">　　jdbc2_0-stdext.jar:</span></p>
<p><span style="font-family: 宋体">　　JDBC2.0的扩展包，一般来说数据库连接池会用上它。不过App Server都会带上，所以也是多余的。</span></p>
<p><span style="font-family: 宋体">　　jta.jar：</span></p>
<p><span style="font-family: 宋体">　　JTA规范，当Hibernate使用JTA的时候需要，不过App Server都会带上，所以也是多余的。</span></p>
<p><span style="font-family: 宋体">　　junit.jar:</span></p>
<p><span style="font-family: 宋体">　　Junit包，当你运行Hibernate自带的测试代码的时候需要，否则就不用。</span></p>
<p><span style="font-family: 宋体">　　xalan.jar, xerces.jar, xml-apis.jar:</span></p>
<p><span style="font-family: 宋体">　　Xerces是XML解析器，Xalan是格式化器，xml-apis实际上是JAXP。一般App Server都会带上，JDK1.4也包含了解析器，不过不是Xerces，是Crimson，效率比较差，不过Hibernate用XML只不过是读取配置文件，性能没什么紧要的，所以也是多余的。 </span></p>
<img src ="http://www.blogjava.net/msmary/aggbug/151868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-10 20:55 <a href="http://www.blogjava.net/msmary/articles/151868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate的第一个一对多实例</title><link>http://www.blogjava.net/msmary/articles/151867.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Wed, 10 Oct 2007 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/151867.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/151867.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/151867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/151867.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/151867.html</trackback:ping><description><![CDATA[&nbsp;
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: 宋体">一、</span><span style="font-family: 宋体">数据库的建立（使用MySQL）</span></p>
<p><span style="font-family: 宋体">create database if not exists `sampledb`;</span></p>
<p><span style="font-family: 宋体">use `sampledb`;</span></p>
<p><span style="font-family: 宋体">/*table structure for table `sampledb`.`personinfo` */</span></p>
<p><span style="font-family: 宋体">drop table if exists `sampledb`.`room`;</span></p>
<p><span style="font-family: 宋体">create table room (</span></p>
<p><span style="font-family: 宋体">&nbsp;room_id int not null auto_increment,</span></p>
<p><span style="font-family: 宋体">&nbsp;address varchar(32) not null default '',</span></p>
<p><span style="font-family: 宋体">&nbsp;primary key&nbsp;(room_id)</span></p>
<p><span style="font-family: 宋体">) type=innodb;</span></p>
<p><span style="font-family: 宋体">create database if not exists `sampledb`;</span></p>
<p><span style="font-family: 宋体">use `sampledb`;</span></p>
<p><span style="font-family: 宋体">/*table structure for table `sampledb`.`personinfo` */</span></p>
<p><span style="font-family: 宋体">drop table if exists `sampledb`.`user`;</span></p>
<p><span style="font-family: 宋体">create table user (</span></p>
<p><span style="font-family: 宋体">&nbsp;user_id int not null auto_increment,</span></p>
<p><span style="font-family: 宋体">&nbsp;name varchar(16) not null default '',</span></p>
<p><span style="font-family: 宋体">&nbsp;room_id int not null,</span></p>
<p><span style="font-family: 宋体">&nbsp;index (room_id),</span></p>
<p><span style="font-family: 宋体">&nbsp;foreign key (room_id) references room(room_id),</span></p>
<p><span style="font-family: 宋体">&nbsp;primary key&nbsp;(user_id)</span></p>
<p><span style="font-family: 宋体">) type=innodb;</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">二、User.java</p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">package</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> com.tanm.test;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> User {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">long</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> String </span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Room </span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">room</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">long</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> getId() {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> setId(</span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">long</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> id) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> String getName() {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> setName(String name) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = name;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Room getRoom() {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">room</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> setRoom(Room room) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">room</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = room;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">三、<span style="font-size: 10pt">User.hbm.xml</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;?</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">xml </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">version</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"1.0" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">encoding</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"UTF-8"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">?&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;!</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">DOCTYPE </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">hibernate-mapping </span><span style="font-size: 10pt; color: gray; font-family: 'Courier New'">PUBLIC</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: gray; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">"-//Hibernate/Hibernate Mapping DTD 3.0//EN"</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">hibernate-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">class </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com.tanm.test.User" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">table</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"user"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">id </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"id" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">column</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"user_id" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">type</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"long"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">generator </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"increment"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"name" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">column</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"name" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">type</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"string" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">not-null</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"true" </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">many-to-one </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"room" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">column</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"room_id" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com.tanm.test.Room" </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">hibernate-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">四、Room.java</p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">package</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> com.tanm.test;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">import</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> java.util.HashSet;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">import</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> java.util.Set;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Room {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">long</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> String </span><span style="font-size: 10pt; background: silver; color: #0000c0; font-family: 'Courier New'">address</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">private</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Set </span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">users</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> HashSet();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> String getAddress() {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; background: silver; color: #0000c0; font-family: 'Courier New'">address</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> setAddress(String address) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 10pt; background: silver; color: #0000c0; font-family: 'Courier New'">address</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = address;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">long</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> getId() {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> setId(</span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">long</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> id) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Set getUsers() {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">users</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> setUsers(Set users) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">this</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">users</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> = users;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">五、Room.hbm.xml</p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;?</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">xml </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">version</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"1.0" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">encoding</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"UTF-8"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">?&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;!</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">DOCTYPE </span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">hibernate-mapping </span><span style="font-size: 10pt; color: gray; font-family: 'Courier New'">PUBLIC</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: gray; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">"-//Hibernate/Hibernate Mapping DTD 3.0//EN"</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: navy; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">hibernate-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">class </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com.tanm.test.Room" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">table</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"room"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">id </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"id" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">column</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"room_id" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">unsaved-value</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"0"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">generator </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"increment"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">id</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">property </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"address" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">column</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"address" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">type</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"string" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">not-null</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"true" </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">set </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"users" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">table</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"user" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">inverse</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"true" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">cascade</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"all"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">key </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">column</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"room_id"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">one-to-many </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"com.tanm.test.User"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">set</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">hibernate-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">六、Test.java</p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">package</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> com.tanm.test;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">import</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> org.hibernate.*;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">import</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> org.hibernate.cfg.*;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Test {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">static</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> main(String[] args) </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">throws</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> HibernateException {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SessionFactory sessionFactory = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Configuration().configure()</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .buildSessionFactory();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Room room = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Room();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; room.setAddress(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"China_xi'an"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User user1 = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> User();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user1.setName(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"111"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User user2 = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> User();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user2.setName(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"222"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user1.setRoom(room);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user2.setRoom(room);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; room.getUsers().add(user1);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; room.getUsers().add(user2);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session = sessionFactory.openSession();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transaction tx = session.beginTransaction();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.save(room);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tx.commit();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.close();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sessionFactory.close();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
<p><span style="font-family: 宋体">成功运行后的结果：</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Hibernate: insert into room (address, room_id) values (?, ?)</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Hibernate: insert into user (name, room_id, user_id) values (?, ?, ?)</span></p>
<span style="font-size: 10pt; color: black; font-family: 'Courier New'">Hibernate: insert into user (name, room_id, user_id) values (?, ?, ?)</span>
<img src ="http://www.blogjava.net/msmary/aggbug/151867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-10 20:53 <a href="http://www.blogjava.net/msmary/articles/151867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个完整的hibernate例子</title><link>http://www.blogjava.net/msmary/articles/151866.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Wed, 10 Oct 2007 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/151866.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/151866.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/151866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/151866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/151866.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">1 </span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">。建立数据库</span></p>
<p><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">Database:mysql</span><span style="font-size: 10pt; font-family: ˎ̥"><br />
drop database if exists SAMPLEDB;<br />
create database hello;<br />
use hello;<br />
<br />
create table CUSTOMERS (<br />
&nbsp; ID int not null primary key,<br />
&nbsp; NAME varchar(15) not null,<br />
&nbsp; PASSWORD varchar(8) not null <br />
);<br />
<br />
<span style="color: #3366ff">2</span></span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">。在</span><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">eclipse </span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">中新建工程</span><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">hbtest<br />
<br />
3</span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">。在</span><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">src</span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">中新建</span><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">package hbm<br />
<br />
4</span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">。新建</span><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">pojo</span><span style="font-size: 10pt; color: #3366ff; font-family: 宋体">类</span><span style="font-size: 10pt; color: #3366ff; font-family: ˎ̥">Customer<br />
</span><span style="font-size: 10pt; font-family: ˎ̥"><br />
<span style="color: #996699">package hbm;<br />
<br />
public class Customer {<br />
&nbsp;&nbsp;&nbsp; private int id;<br />
&nbsp;&nbsp;&nbsp; private String name;<br />
&nbsp;&nbsp;&nbsp; private String password;<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* @return Returns the id.<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public int getId() {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return id;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* @param id<br />
&nbsp;&nbsp;&nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The id to set.<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public void setId(int id) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.id = id;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* @return Returns the name.<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public String getName() {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return name;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* @param name<br />
&nbsp;&nbsp;&nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The name to set.<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public void setName(String name) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.name = name;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* @return Returns the password.<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public String getPassword() {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return password;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp; &nbsp;* @param password<br />
&nbsp;&nbsp;&nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The password to set.<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public void setPassword(String password) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.password = password;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //constructor<br />
&nbsp;&nbsp;&nbsp; public Customer() {<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}</span><br />
<br />
5</span><span style="font-size: 10pt; font-family: 宋体">。使用</span><span style="font-size: 10pt; font-family: ˎ̥">myeclipse</span><span style="font-size: 10pt; font-family: 宋体">插件建立</span><span style="font-size: 10pt; font-family: ˎ̥">hibernate.cfg.xml&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: 宋体">位于</span><span style="font-size: 10pt; font-family: ˎ̥">src</span><span style="font-size: 10pt; font-family: 宋体">目录下</span><span style="font-size: 10pt; font-family: ˎ̥"><br />
<span style="color: #6699ff">&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br />
&lt;!DOCTYPE hibernate-configuration PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;<br />
<br />
&lt;!-- Generated by MyEclipse Hibernate Tools.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&lt;hibernate-configuration&gt;<br />
<br />
&lt;session-factory&gt;&nbsp;</span></span></p>
<p style="text-indent: 15pt"><span style="font-size: 10pt; color: #6699ff; font-family: ˎ̥">&lt;property name="dialect"&gt;</span><span style="font-size: 10pt; font-family: ˎ̥">org.hibernate.dialect.MySQLDialect<span style="color: #6699ff">&lt;/property&gt;</span></span></p>
<p style="text-indent: 15pt"><span style="font-size: 10pt; color: #6699ff; font-family: ˎ̥">&lt;property name="connection.driver_class"&gt;</span><span style="font-size: 10pt; font-family: ˎ̥">com.mysql.jdbc.Driver<span style="color: #6699ff">&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="connection.url"&gt;</span>jdbc:mysql://127.0.0.1:3306/hell<span style="color: #6699ff">o&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="myeclipse.connection.profile"&gt;</span>hbmysql<span style="color: #6699ff">&lt;/property&gt;</span></span></p>
<p style="text-indent: 15pt"><span style="font-size: 10pt; color: #6699ff; font-family: ˎ̥">&lt;property name="connection.username"&gt;</span><span style="font-size: 10pt; font-family: ˎ̥">root<span style="color: #6699ff">&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="connection.password"&gt;</span>123<span style="color: #6699ff">&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;mapping resource="hbm/Customer.hbm.xml" /&gt;<br />
<br />
&lt;/session-factory&gt;<br />
<br />
&lt;/hibernate-configuration&gt;</span><br />
<br />
6</span><span style="font-size: 10pt; font-family: 宋体">。在</span><span style="font-size: 10pt; font-family: ˎ̥">hbm package</span><span style="font-size: 10pt; font-family: 宋体">内新建</span><span style="font-size: 10pt; font-family: ˎ̥">Customer.hbm.xml<br />
<span style="color: #6699ff">&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;<br />
<br />
&lt;!-- Generated by MyEclipse Hibernate Tools.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&lt;hibernate-mapping&gt;<br />
&lt;class name="hbm.Customer" table="CUSTOMERS"&gt;<br />
&lt;id name="id" column="ID" type="int"&gt;<br />
&lt;generator class="increment"/&gt;<br />
&lt;/id&gt;<br />
&lt;property name="name" column="NAME" type="string" not-null="true"/&gt;<br />
&lt;property name="password" column="PASSWORD" type="string" not-null="true"/&gt;<br />
&lt;/class&gt;<br />
<br />
&lt;/hibernate-mapping&gt;</span><br />
<br />
7</span><span style="font-size: 10pt; font-family: 宋体">。使用</span><span style="font-size: 10pt; font-family: ˎ̥">hibernate</span><span style="font-size: 10pt; font-family: 宋体">操作数据库</span><span style="font-size: 10pt; font-family: ˎ̥"><br />
<span style="color: #996699">package hbm;<br />
<br />
import org.hibernate.*;<br />
import org.hibernate.cfg.*;<br />
import java.util.Iterator;<br />
import java.util.List;<br />
<br />
public class Hbmain {<br />
<br />
&nbsp;&nbsp;&nbsp; public static SessionFactory sessionFactory;//</span></span><span style="font-size: 10pt; color: #996699; font-family: 宋体">数据存储源</span><span style="font-size: 10pt; color: #996699; font-family: ˎ̥"><br />
&nbsp;&nbsp;&nbsp; static {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Configuration config = new Configuration().configure();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sessionFactory = config.buildSessionFactory();<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size: 10pt; color: #996699; font-family: 宋体">将一个</span><span style="font-size: 10pt; color: #996699; font-family: ˎ̥">customer</span><span style="font-size: 10pt; color: #996699; font-family: 宋体">对象存入</span><span style="font-size: 10pt; color: #996699; font-family: ˎ̥">database <br />
&nbsp;&nbsp;&nbsp; &nbsp;* @Customer customer Object<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public void saveCustomer(Customer ct) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Session session = sessionFactory.openSession();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Transaction tx = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx = session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.save(ct);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx.commit();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx.rollback();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } finally {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.close();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size: 10pt; color: #996699; font-family: 宋体">查找所有的</span><span style="font-size: 10pt; color: #996699; font-family: ˎ̥">customer object<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public void findAll() {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Session session = sessionFactory.openSession();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Transaction tx = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx = session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; List customers = session.createQuery(<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "from Customer as c order by c.name asc").list();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Iterator it = customers.iterator();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println("append:"+customers.size());<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while(it.hasNext())<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Customer c = (Customer)it.next();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println("ID:" + c.getId());<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println("Name:" + c.getName());<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println("Pass:" + c.getPassword());<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx.commit();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx.rollback();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } finally {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.close();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size: 10pt; color: #996699; font-family: 宋体">修改</span><span style="font-size: 10pt; color: #996699; font-family: ˎ̥">customer Name <br />
&nbsp;&nbsp;&nbsp; &nbsp;* @name<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public void loadUpdate(int customer_id, String name) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Session session = sessionFactory.openSession();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Transaction tx = null;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx = session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Customer c = (Customer) session.load(Customer.class, customer_id);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c.setName(name);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx.commit();<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (tx != null) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tx.rollback();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } finally {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.close();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size: 10pt; color: #996699; font-family: 宋体">测试以上的方法</span><span style="font-size: 10pt; color: #996699; font-family: ˎ̥"><br />
&nbsp;&nbsp;&nbsp; &nbsp;* save() find() update()<br />
&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public void test()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Customer ct = new Customer();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //ct.setId(5);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ct.setName("buaa");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ct.setPassword("5768");<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.saveCustomer(ct);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.findAll();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.loadUpdate(ct.getId(),"phop");<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Hbmain hb = new Hbmain();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hb.test();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sessionFactory.close();<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}</span></p>
<p style="text-indent: 94.5pt"><a href="http://forum.byr.edu.cn/pc/pccon.php?id=959&amp;nid=31031&amp;s=all"><span style="font-family: 宋体">初学hibernate<span style="font-family: 宋体">遇到的几个问题的解决</span></a></span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">参考书是孙卫琴的&lt;精通Hibernate&gt;</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">hibernate 3 + mysql 5.0</span></p>
<p style="line-height: 16.3pt"><strong>1&nbsp;</strong><span style="font-size: 10pt">书上的例子第2章 初始化 hibernate Configuration实例</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">代码如下：</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: #996699">Configuration config = new Configuration();</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: #996699">config.addClass("Customer.class");</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: #996699">SessionFactory sessionfactory = config.buildSessionFactory();</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">配置文件是 hibernate.properties</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">运行出错 ：提示为 </span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: red">org.hibernate.HibernateException: database product name cannot be null</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">显然是配置文件的问题</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">我用的配置文件是 hibernate.cfg.xml</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">修改为以下代码 成功运行</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: #996699">Configuration config = new Configuration().configure();<br />
SessionFactory sessionFactory = config.buildSessionFactory();</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">原因:使用了xm作为配置文件，而没有选择properties文件,应该使用new Configuration().config();</span></p>
<p style="line-height: 16.3pt"><strong>2&nbsp;</strong><span style="font-size: 10pt">书上例子第六章一对多映射</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">customer.hbm.xml </span><span style="font-size: 10pt">中</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">原代码为</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: #6699ff">&lt;hibernate-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;class name="demo1.Customer" table="CUSTOMERS"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;id name="id" type="long" column="ID"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;generator class="increment" /&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;property name="name" type="string"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;column name="NAME" length="15" /&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br />
&lt;/hibernate-mapping&gt;</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">此时执行其Business.java时</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: #996699">Customer customer = (Customer) session.load(Customer.class,<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; new Long(customer_id));</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt">出现如下错误</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: teal">1</span><span style="font-size: 10pt"> <span style="color: black">Exception&nbsp;in&nbsp;thread&nbsp;"main"&nbsp;java.lang.NullPointerException<br />
</span><span style="color: teal">2</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.tuple.AbstractTuplizer.createProxy(AbstractTuplizer.java:249)<br />
</span><span style="color: teal">3</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.persister.entity.BasicEntityPersister.createProxy(BasicEntityPersister.java:2831)<br />
</span><span style="color: teal">4</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:218)<br />
</span><span style="color: teal">5</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:163)<br />
</span><span style="color: teal">6</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:79)<br />
</span><span style="color: teal">7</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.impl.SessionImpl.load(SessionImpl.java:603)<br />
</span><span style="color: teal">8</span><span style="color: black"> &nbsp;at&nbsp;org.hibernate.impl.SessionImpl.load(SessionImpl.java:596)</span></span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: black">修改为</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: black">&lt;hibernate-mapping </span><span style="font-size: 10pt; color: red">default-lazy="false"</span><span style="font-size: 10pt; color: black">&gt;<br />
</span><span style="font-size: 10pt; color: #6699ff">&lt;class name="demo1.Customer" table="CUSTOMERS"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;id name="id" type="long" column="ID"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;generator class="increment" /&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;property name="name" type="string"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;column name="NAME" length="15" /&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br />
&lt;/hibernate-mapping&gt;</span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: black">问题解决 </span></p>
<p style="line-height: 16.3pt"><span style="font-size: 10pt; color: black">原因在于： </span><span style="font-size: 10pt">Hibernate&nbsp;3.0&nbsp;</span><span style="font-size: 10pt">与Hibernate2.1的源代码是不兼容的<br />
在Hibernate2.1中，lazy属性的默认值为&#8220;false&#8221;，而在Hibernate3.0中，lazy属性的默认值为&#8220;true&#8221;。</span></p>
<img src ="http://www.blogjava.net/msmary/aggbug/151866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-10 20:52 <a href="http://www.blogjava.net/msmary/articles/151866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>