﻿<?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-Topquan's Blog-文章分类-Hibernate</title><link>http://www.blogjava.net/topquan/category/23898.html</link><description>分享价值----成就你我----我的博客----你的家</description><language>zh-cn</language><lastBuildDate>Sat, 07 Jul 2007 11:21:06 GMT</lastBuildDate><pubDate>Sat, 07 Jul 2007 11:21:06 GMT</pubDate><ttl>60</ttl><item><title>Hibernate-----The first Program</title><link>http://www.blogjava.net/topquan/articles/62034.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Sun, 06 Aug 2006 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/62034.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/62034.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/62034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/62034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/62034.html</trackback:ping><description><![CDATA[<p><font color=#008000 size=6>一、准备工作</font> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实Hibernate本身是个独立的框架，它不需要任何web server或application server的支持。然而，大多数的Hibernate入门介绍都加入了很多非Hibernate的东西，比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解，特别是打击了初学者的积极性。</p>
<p>在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet，和JBoss。本文的目的是演示一下Hibernate的安装过程以及最基本的功能，从而给初学者一个低得不能再低的入门门槛。</p>
<p><br>下载文件</p>
<p>你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。</p>
<p>1、Hibernate包下载地址:<br><a href="http://prdownloads.sourceforge.net/hibernate/?sort_by=date&amp;sort=desc">http://prdownloads.sourceforge.net/hibernate/?sort_by=date&amp;sort=desc</a></p>
<p>2、Ant包下载地址:<br><a href="http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip">http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip</a></p>
<p>3、JDBC Driver要根据你用的database来定，一般database官方网站上都会有。Hibernate支持常用的database，比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。这些数据库都有JDBC Driver: </p>
<p>Oracle JDBC Driver下载地址(下载前必须同意Oracle协议书)<br><a href="http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html">http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html</a></p>
<p>MySQL JDBC Driver下载地址<br><a href="http://dev.mysql.com/downloads/connector/j/3.0.html">http://dev.mysql.com/downloads/connector/j/3.0.html</a></p>
<p>PostgreSQL JDBC Driver下载地址<br><a href="http://jdbc.postgresql.org/download.html">http://jdbc.postgresql.org/download.html</a></p>
<p>MS-SQL Server JDBC Driver下载地址<br><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&amp;displaylang=en</a></p>
<p>4、将Hibernate包和Ant包分别解压至c:\dev\下(此目录不重要，你可以换其它任何目录)。</p>
<p>配置环境</p>
<p>1&gt;、你需要添加一个新的环境变量: ANT_HOME，让它指向c:\dev\&lt;你的ANT包所在目录&gt;。并在PATH环境变量里添加%ANT_HOME%\bin。</p>
<p>2&gt;、你需要添加一个新的环境变量: JAVA_HOME，让它指向你的j2sdk根目录。并在PATH环境变量里添加%JAVA_HOME%\bin。</p>
<p>3&gt;、创建一个项目目录，比如c:\workspace\My1stHibernate。</p>
<p>在项目目录下，另外创建三个目录: src, classes, lib。</p>
<p>在lib目录下，创建两个目录: hibernate和db。</p>
<p>这样你有了如下的文件结构:</p>
<p>c:\workspace\My1stHibernate\<br>c:\workspace\My1stHibernate\src<br>c:\workspace\My1stHibernate\classes<br>c:\workspace\My1stHibernate\lib<br>c:\workspace\My1stHibernate\lib\hibernate<br>c:\workspace\My1stHibernate\lib\db</p>
<p>4、将c:\dev\&lt;你的Hibernate包所在目录&gt;\hibernate2.jar文件copy到c:\workspace\My1stHibernate\lib\hibernate下。</p>
<p>将c:\dev\&lt;你的Hibernate包所在目录&gt;\lib\下的所有文件同样copy到c:\workspace\My1stHibernate\lib\hibernate下。</p>
<p>将你的JDBC Driver文件(一般是一个jar文件)copy到c:\workspace\My1stHibernate\lib\db下。<br><br><font color=#009900 size=6>二、创建数据库</font></p>
<p>1、用你最喜爱的database软件，创建一个hibernate_test的数据库。</p>
<p>2、在此数据库下，新建一个table名为CUSTOMER</p>
<p>CREATE TABLE CUSTOMER<br>(<br>&nbsp;&nbsp;&nbsp; CID INTEGER NOT NULL PRIMARY KEY, <br>&nbsp;&nbsp;&nbsp; USERNAME VARCHAR(12) NOT NULL, <br>&nbsp;&nbsp;&nbsp; PASSWORD VARCHAR(12) <br>);<br><br><font color=#008000 size=6>三、编写Java文件（POJO）</font></p>
<p>public class Customer {<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; private int id;<br>&nbsp;&nbsp;&nbsp; private String username;<br>&nbsp;&nbsp;&nbsp; private String password;</p>
<p><br>&nbsp;&nbsp;&nbsp; public int getId() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return id;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getPassword() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return password;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getUsername() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return username;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setId(int id) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.id = id;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setPassword(String password) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.password = password;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setUsername(String username) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.username = username;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>将此类存为c:\workspace\My1stHibernate\src\Customer.java文件。</p>
<p><font color=#008000 size=6>四、编写Test类</font> </p>
<p>import net.sf.hibernate.*;<br>import net.sf.hibernate.cfg.*;</p>
<p>public class Test {</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SessionFactory sf =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Configuration().configure().buildSessionFactory();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session = sf.openSession();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transaction tx = session.beginTransaction();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 200; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Customer customer = new Customer();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; customer.setUsername("customer" + i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; customer.setPassword("customer");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.save(customer);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tx.commit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.close();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (HibernateException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>将此类存为c:\workspace\My1stHibernate\src\Test.java文件。<br>&nbsp;</p>
<p><font color=#008000 size=6>五、创建Hibernate映射文件</font> </p>
<p>因为这里只有一个Class --- Customer 和一个Table --- CUSTOMER，你只需要建立一个映射文件--- Customer.hbm.xml，来对应Customer类和CUSTOMER表之间的关系。</p>
<p>&lt;?xml version="1.0"?&gt;<br>&lt;!DOCTYPE hibernate-mapping PUBLIC<br>&nbsp;&nbsp;&nbsp; "-//Hibernate/Hibernate Mapping DTD//EN"<br>&nbsp;&nbsp;&nbsp; "<a href="http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd</a>"&gt;</p>
<p>&lt;hibernate-mapping&gt;<br>&nbsp;&nbsp;&nbsp; &lt;class name="Customer" table="CUSTOMER"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id name="id" column="CID"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;generator class="increment" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/id&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="username" column="USERNAME" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" column="PASSWORD" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br>&lt;/hibernate-mapping&gt;</p>
<p>把此文件存为c:\workspace\My1stHibernate\src\Customer.hbm.xml，和Customer.java放在同一目录下。</p>
<p><br><font color=#008000 size=6>六、编写Ant build.xml文件</font> </p>
<p>你不一定要知道这个build.xml的细节，其实Ant也不是Hibernate所必须的。这里用Ant是为了简化一些任务，比如: 编译、copy、运行，等。</p>
<p>&lt;?xml version="1.0" ?&gt;</p>
<p>&lt;project name="My1stHibernate" default="build" basedir="."&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;property name="base.dir" value="." /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;property name="src.dir" value="src" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;property name="lib.dir" value="lib" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;property name="build.dir" value="classes" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;path id="myclasspath"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fileset dir="${lib.dir}"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include name="**/*.jar" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fileset&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pathelement location="${build.dir}" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/path&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;target name="init"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mkdir dir="${build.dir}" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/target&gt;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;target name="build" depends="init" description="compile the source files"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;javac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;copy todir="${build.dir}" &gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fileset dir="${src.dir}" &gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;exclude name="**/*.java"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fileset&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/copy&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/target&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;target name="run" depends="build"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;java classpathref="myclasspath" classname="Test" fork="true" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/target&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;target name="clean"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;delete includeEmptyDirs="true"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fileset dir="${build.dir}" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/delete&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/target&gt;</p>
<p>&lt;/project&gt;<br><br><font color=#008000 size=6>七、配置Hibernate描述文件</font></p>
<p>Hibernate描述文件可以是一个properties或xml 文件，其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描述文件。</p>
<p>&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br>&lt;!DOCTYPE hibernate-configuration<br>&nbsp;&nbsp;&nbsp; PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"<br>&nbsp;&nbsp;&nbsp; "<a href="http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd</a>"&gt;</p>
<p>&lt;hibernate-configuration&gt;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;session-factory name="java:/hibernate/HibernateFactory"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="show_sql"&gt;true&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.driver_class"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oracle.jdbc.driver.OracleDriver &lt;!-- 这里是Oracle 9i的JDBC driver class名 --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.url"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jdbc:oracle:oci8:@hibernate_test &lt;!-- 这里是Oracle的hibernate_test数据库URL --&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.username"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你的数据库用户名<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="connection.password"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你的数据库密码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dialect"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.sf.hibernate.dialect.Oracle9Dialect &lt;!-- 这里是Oracle 9i的Dialect --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mapping resource="Customer.hbm.xml" /&gt; &lt;!-- 指定Customer的映射文件 --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;/session-factory&gt;<br>&nbsp;&nbsp;&nbsp; <br>&lt;/hibernate-configuration&gt;</p>
<p>如果你用的不是Oracle 9i，可到C:\dev\&lt;你的Hibernate包所在目录&gt;\src\hibernate.properties文件里找到你的数据库，然后替换以上相对应的值。</p>
<p><br><font color=#008000 size=6>八、开始运行</font> </p>
<p>到c:\workspace\My1stHibernate下，运行ant run。如果你严格依照以上步骤，应该看到</p>
<p>run:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [java] log4j:WARN Please initialize the log4j system properly.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [java] Hibernate: insert into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)<br>BUILD SUCCESSFUL</p>
<p>到你的hibernate_test数据库看一下，在CUSTMOR表里新添了200条记录，但你没有写任何JDBC code。<br>以后如果你要更换数据库，只需要改变hibernate.cfg.xml描述文件里相应的值即可。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/topquan/aggbug/62034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-06 09:05 <a href="http://www.blogjava.net/topquan/articles/62034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate延迟加载 </title><link>http://www.blogjava.net/topquan/articles/61896.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 17:20:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61896.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61896.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61896.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61896.html</trackback:ping><description><![CDATA[<div class=postTitle>延迟加载的对象：<br>hibernate 2针对实体对象和集合<br>hibernate 3同时提供了属性的延迟加载功能。<br>其中对集合的延迟加载特性意义最为重大。</div>
<p>实体对象的延迟加载:<br>1.在hibernate配置文件中的class指定</p>
<p>集合类型的延迟加载：<br>在set中指定lazy=true<br>这样只有实际加载与对象相关联的集合对象的时候，再通过session从数据库中加载实际的数据集。<br>Hibernate.initialize方法可以强制Hibernate立即加载关联的对象集，例如：<br>Hibernate.initialize(user.getAddress());<br>集合类型的缓存：<br>如果为某个集合类设定了缓存，如<br>&lt;set <br>&nbsp;&nbsp;&nbsp; name="address"<br>&nbsp;&nbsp;&nbsp; table="t_address"<br>&nbsp;&nbsp;&nbsp; lazy="true"<br>&nbsp;&nbsp;&nbsp; ......<br>&gt;<br>&nbsp;&nbsp;&nbsp; &lt;cache usage="read-only"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;key column="user_id" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;one-to-many class="cn.blogjava.TAddress" /&gt;<br>&lt;/set&gt;<br>Hibernate对集合类型进行缓存的时候，分两部分保存。首先是这个集合中所有实体的id列表，其次才是各个实体对象。<br>这里制定了cache usage="read-only"只会使得Hibernate对数据索引进行缓存。也就是说只缓存了集合中的数据索引，并不包含集合中的各个实体元素。<br>如果指定cache usage="read-write"才会对集合中的实体进行缓存。</p>
<p>属性的延迟加载：<br>在property节点中声明lazy=true,而且还需要借助Hibernate类增强器对POJO类的二进制Class文件进行强化处理。</p>
<p>&nbsp;</p>
<p>hibernate中的Collection<br>Hibernate对JDK Collention接口的独立实现：<br>由于传统的Java Set, Map, List实现不能满足要求，Hibernate根据这些接口提供了自己的实现。<br>Hibernate的实现：<br>无序集：Set, Bag, Map<br>有序集：List<br>Bag相当于一个允许重复元素存在的Set。<br>因为Hibernate是自己的Collection实现，所以如下语句会出错，<br>Set hset = (HashSet)user.getAddresses();<br>会在运行期报告一个java.lang.ClassCastException,因为实际上返回的是一个类型为org.hibernate.collention.Set的对象。<br>所有我们在写POJO时，必须用JDK Collection Interface(如Set, Map)，而非特定的JDK Collection实现类(如HashSet, HashMap)声明Collection型属性的原因。例如：<br>应该是private Set addresses;<br>而不是private HashSet addresses;</p>
<p>collection类型属性的保存过程。<br>例如<br>public class TUser implements Serializable {<br>&nbsp;private Set addresses = new HashSet();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br>}</p>
<p>然后创建一个TUser实例后，就可以为其添加关联的address对象：<br>TUser user = new TUser();<br>TAddress addr = new TAddress();<br>addr.setAddress("HongKong");<br>user.getAddress().add(addr);<br>session.save(user);<br>user对象在经过Hibernate处理后发生了变化，首先，由于insert操作，产生了id值，并填充到user对象的id属性，另一方面Hibernate使用了自己的collection实现对user中的HashSet型addresses属性进行了替换，并用数据对其进行了填充。</p>
<img src ="http://www.blogjava.net/topquan/aggbug/61896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 01:20 <a href="http://www.blogjava.net/topquan/articles/61896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate数据加载 </title><link>http://www.blogjava.net/topquan/articles/61894.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 17:19:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61894.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61894.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61894.html</trackback:ping><description><![CDATA[<div class=postTitle>单一数据加载：Session.get/load<br>均可以根据指定的实体类和id从数据库中读取记录，并返回与之对应的实体对象。<br>区别：<br>1.如果未能发现符合条件的记录，get方法返回null,而load方法会抛出一个ObjectNotFoundException。<br>2.Load方法可返回实体的代理类实例，而get方法永远直接返回实体类。<br>3.load方法可以充分利用内部缓存和二级缓存中的现有数据，而get方法仅在内部缓存中查找，如果没有发现对应的数据，将越过二级缓存，直接调用SQL完成数据读取。<br>数据加载的过程：<br>1.在一级缓存中，根据实体类型和id进行查找，如果在第一级缓存中命中，且数据状态合法，则直接返回。<br>2.Session会在当前"NonExists"记录中进行查找，如果在"NonExists"记录中存在同样的条件，返回null。<br>3.对load方法而言，如果内部缓存中没法现有效数据，查询二级缓存，命中则返回。<br>4.如果缓存中无有效数据，发起数据库查询操作(Select SQL)，如果经过查询未发现对应记录，将此次查询的信息在"NonExists"中加以记录，返回null.<br>5.根据映射配置和Select SQL查询得到的ResultSet，创建对应的数据对象。<br>6.将对象纳入一级缓存。<br>7.执行Interceptor.onLoad方法(如果有对应的Interceptor)<br>8.将数据纳入二级缓存<br>9.如果数据对象实现了LifeCycle接口，则调用数据对象的onLoad方法。<br>10.返回数据对象。</div>
<p><br>批量查询：Session.find/iterate<br>查询性能往往是系统性能表现的一个重要方面，查询机制的优劣很大程度上决定了系统的整体性能。这个领域往往也存在最大的性能调整空间。</p>
<p>hibernate2中Session.find()对应于3中的session.createQuery().list();<br>hibernate2中Session.iterate()对应于3中的session.createQuery().iterate();<br>find和iterate区别：<br>find方法通过一条Select SQL实现了查询操作，而iterate方法要执行多条Select SQL.<br>iterate第一次查询获取所有符合条件的记录的id，然后再根据各个id从库表中读取对应的记录，这是一个典型的N+1次的查询问题，如果符合条件记录有10000条，就需要执行10001条Select SQL，可想性能会如何的差。</p>
<p>那为什么要提供iterator方法，而不只是提供高效率的find方法？</p>
<p>原因1.与hibernate缓存机制密切相关<br>find方法实际上是无法利用缓存的，它对缓存只写不读。<br>find方法只执行一次SQL查询，它无法判断缓存中什么样的数据是符合条件的，也无法保证查询结果的完整性。而iterate方法，会首先查询所有符合条件记录的id，然后根据id去缓存中找，如果缓存中有该id，就返回，没有可以根据id再去数据库查询。<br>String hql = "from TUser where age &gt; ?";<br>List userList = session.find(hql, new Integer(18), Hibernate.INTEGER);<br>Iterator it = session.iterate(hql, new Integer(18), Hibernate.INTEGER);<br>顺序执行，iterate方法只会执行一次SQL查询，就是查找id，然后根据id就可以从缓存中获得数据。</p>
<p>String hql = "from TUser where age &gt; ?";<br>List userList = session.find(hql, new Integer(18), Hibernate.INTEGER);<br>userList = session.find(hql, new Integer(18), Hibernate.INTEGER);<br>缓存是不起作用的。<br>如果目标数据读取相对较为频繁，通过iterate这种机制，会减少性能损耗。</p>
<p>原因2.内存使用上的考虑<br>find方法将一次获得的所有记录并将其读入内存。如果数据量太大，可能会触发OutOfMemoryError，从而导致系统异常。解决方案之一就是结合iterate方法和evict方法逐条对记录进行处理，将内存消化保持在一个可以接受的范围之内。如：<br>String hql = "from TUser where age &gt; ?";<br>Iterator it = session.iterate(hql, new Integer(18), Hibernate.INTEGER);<br>while(it.hasNext()) {<br>&nbsp;&nbsp;&nbsp; TUser user = (TUser)it.next();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; //将对象从一级缓存中删除<br>&nbsp;&nbsp;&nbsp; session.evict(user);</p>
<p>&nbsp;&nbsp;&nbsp; //二级缓存可以设定最大缓存量,达到后自动对较老数据进行废除,但也可以通过编<br>&nbsp;&nbsp;&nbsp; //码移除,这样有助于保持数据有效性。<br>&nbsp;&nbsp;&nbsp; sessionFactory.evict(TUser.class, user.getID());<br>}<br><br><br>批量数据处理的缓存同步问题<br>1.hibernate 2:<br>session.delete("from TUser");<br>会先查询出id，然后逐个id执行 delete from T_User where id = ?;<br>这样造成效率低下。<br>为什么不直接采用一条Delete SQL？是因为ORM要自动维持其内部状态属性，必须知道用户作了什么操作。必须先从数据库中获得待删除对象，然后根据这些对象对内部缓存和二级缓存的数据进行整理，以保持内存状态与数据库的一致性。<br>单执行一条删除语句，删除了什么数据，只有数据库知道，ORM无法得知。下次用户从缓存中读出的数据，很可能就是被删除的数据，从而导致逻辑错误。当然，如果ORM可以根据DELETE SQL对缓存中数据进行处理，将缓存中符合条件的对象废除，然后再执行DELETE SQL<br>，但是这样导致缓存的管理复杂性大大增加(实际相当于实现了一个支持SQL的内存数据库)，这对于轻量级的ORM实现而言太苛刻了。<br>2.hibernate 3<br>性能提高。<br>但无法解决缓存同步上的问题，无法保证缓存数据的一致有效性。<br>Tuser user = (TUser)session.load(TUser.class, new Integer(1));</p>
<p>//通过Bulk delete/update 删除id=1的用户记录<br>Transaction tx = session.beginTransaction();<br>String hql = "delete TUser where id=1";<br>Query query = session.createQuery(hql);<br>query.executeUpdate();<br>tx.commit();</p>
<p>//再次尝试加载<br>user = (TUser)session.load(TUser.class, new Integer(1));<br>可以看到第二次加载是成功的。</p>
<img src ="http://www.blogjava.net/topquan/aggbug/61894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 01:19 <a href="http://www.blogjava.net/topquan/articles/61894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate事务处理和锁 </title><link>http://www.blogjava.net/topquan/articles/61893.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 17:18:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61893.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61893.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61893.html</trackback:ping><description><![CDATA[<div class=postTitle>事务处理：<br>Hibernate本身并不具备事务管理能力。在事务管理层，Hibernate将其委托给底层的JDBC或者JTA，以实现事务的管理与调度。</div>
<p>基于JDBC的事务：<br>无疑是最简单的实现方式，<br>session = sessionFactory.openSession();<br>Transaction tx = session.beginTransaction();<br>tx.commit();</p>
<p>基于JTA的事务管理：<br>hibernate默认采用JDBC Transacion。可以通过配置文件指定采用JTA作为事务管理实现。<br>&lt;hibernate-configuration&gt;<br>&nbsp;&nbsp;&nbsp; &lt;session-factory&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.transaction.factory_class"&gt;<br>&nbsp;&nbsp;org.hibernate.transaction.JTATransactionFactory<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/session-factory&gt;<br>&lt;/hibernate-configuration&gt;</p>
<p>锁(locking)<br>支持两种锁：悲观锁和乐观锁</p>
<p>悲观锁(Pessimistic locking)：<br>数据库的实现<br>select * from account where name='yyy' for update<br>通过for update子句，这条语句锁定所有符合条件的记录，在本次事务提交之前，外界无法修改这些记录。</p>
<p>hibernate的实现，也是基于数据库的锁机制实现：<br>加锁一般通过以下方法实现：<br>Criteria.setLockMode<br>Query.setLockMode<br>Session.lock</p>
<p>hibernate的加锁模式：<br>LockMode.NONE:无锁机制<br>LockMode.WRITE:hibernate在Insert和update时，会自动获取<br>LockMode.READ:hibernate在读取记录的时候，会自动获取<br>以上3种，由hibernate内部使用。</p>
<p>LockMode.UPGRADE:利用数据库的for update子句加锁<br>LockMode.UPGRADE_NOWAIT：oracle特定实现，利用oracle的for update nowait子句实现加锁。</p>
<p>乐观锁(Optimistic locking)：<br>hibernate在其数据访问引擎中内置了乐观锁实现。可以通过class描述符的optimistic-lock属性结合version描述符指定。</p>
<p>&lt;hibernate-mapping&gt;<br>&nbsp;&nbsp;&nbsp; &lt;class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="org.hibernate.sample.TUser"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table="t_user"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dynamic-update="true"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dynamic-insert="true"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; optimistic-lock="version"<br>&nbsp;&nbsp;&nbsp; &gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;id&gt;......<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/id&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;version<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; column="version"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="version"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="java.lang.Integer"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br>&lt;/hibernate-mapping&gt;<br>注意,version节点要在ID节点之后。<br>这里，声明了一个version属性，用于存放用户的版本信息，保存在T_User表的version字段中。</p>
<img src ="http://www.blogjava.net/topquan/aggbug/61893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 01:18 <a href="http://www.blogjava.net/topquan/articles/61893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 数据缓存 </title><link>http://www.blogjava.net/topquan/articles/61892.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 17:16:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61892.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61892.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61892.html</trackback:ping><description><![CDATA[<div class=postTitle>&nbsp;</div>
<p>在Hibernate中，缓存将在以下情况中发挥作用：<br>1.通过id[主键]加载数据的时候<br>2.延迟加载</p>
<p>一级缓存：<br>又称内部缓存，保存了与当前session相关联的数据对象，伴随Session实例的创建而创建，消亡而消亡。因此又称此缓存为Session level cache。</p>
<p>一级缓存正常情况下又Hibernate自动维护，如果需要手动干预，可以通过以下方法完成。<br>1.Session.evict<br>&nbsp; 将某个特定对象从内部缓存中清除。<br>2.Sessin.clear<br>&nbsp; 清空内部缓存</p>
<p>二级缓存：<br>又称为SessionFactory Level Cache.<br>对什么样的数据使用二级缓存？<br>对所有数据都进行缓存是最简单的办法，也是最常用的办法。<br>但是某些情况下，反而会影响性能，比如电话费查询系统，如果实行缓存，内存会被几乎不可能再被重用的数据充斥，导致性能下降。<br>如果数据满足以下条件，可以将其纳入缓存管理：<br>1.数据不会被第三方应用修改。<br>2.data size在可以接受的范围之内<br>3.数据更新频率较低<br>4.同一数据可能会被系统频繁引用<br>5.非关键数据<br>Hibernate本身并没提供二级缓存的产品化实现(只提供了一个基于HashTable的简单缓存以供调试)，可以使用第三方缓存来实现。<br>默认采用EHCache作为二级缓存实现。<br>EHCache org.ehcache.hibernate.Provider</p>
<img src ="http://www.blogjava.net/topquan/aggbug/61892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 01:16 <a href="http://www.blogjava.net/topquan/articles/61892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate  Component</title><link>http://www.blogjava.net/topquan/articles/61886.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61886.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61886.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61886.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61886.html</trackback:ping><description><![CDATA[<div class=postTitle>将实体对象中的逻辑组成称为component。在配置文件中，使用component节点对组件进行声明。<br><br>例如，一个用户有两个部分组成，姓名和联系方式。姓名和联系方式都可以作为用户的组成部分。<br><br>1.表结构如下<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">use</span><span style="COLOR: #000000">&nbsp;sample;<br></span><span style="COLOR: #0000ff">DROP</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">TABLE</span><span style="COLOR: #000000">&nbsp;t_user;<br><br></span><span style="COLOR: #0000ff">CREATE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">TABLE</span><span style="COLOR: #000000">&nbsp;t_user&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">NOT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">&nbsp;AUTO_INCREMENT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;age&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;firstname&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;lastname&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">50</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;address&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">200</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;zipcode&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">10</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;tel&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">20</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">PRIMARY</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">KEY</span><span style="COLOR: #000000">&nbsp;(id)<br>);</span></div>
<br>2.配置文件<br>TUser.hbm.xml<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;?xml&nbsp;version</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">?&gt;<br>&lt;!DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&lt;hibernate-mapping&gt;<br>&lt;!--&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auto-generated&nbsp;mapping&nbsp;file&nbsp;from<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;hibernate.org&nbsp;cfg2hbm&nbsp;engine<br>--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;class&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cn.blogjava.component.TUser</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;table</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t_user</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;catalog</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sample</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">id</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">integer</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">id</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;generator&nbsp;class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">native</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/id&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">age</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">integer</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">age</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;component&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cn.blogjava.component.Name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">firstname</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">firstname</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;length</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lastname</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lastname</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;length</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/component&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;component&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">contact</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cn.blogjava.component.Contact</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;length</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zipcodes</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zipcode</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;length</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tel</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tel</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;length</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/component&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/class&gt;<br>&lt;/hibernate-mapping&gt;<br></span></div>
将TUser.hbm.xml配置文件加入到hibernate.cfg.xml中去<br><br>3.POJO类<br>Contact.java<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;cn.blogjava.component;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.io.Serializable;<br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Contact&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;Serializable&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;address;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;zipcodes;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;tel;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getAddress()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;address;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setAddress(String&nbsp;address)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.address&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;address;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getTel()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;tel;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setTel(String&nbsp;tel)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.tel&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tel;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getZipcodes()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;zipcodes;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setZipcodes(String&nbsp;zipcodes)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.zipcodes&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;zipcodes;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br></span></div>
<br>Name.java<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;cn.blogjava.component;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.io.Serializable;<br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Name&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;Serializable&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;firstname;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;lastname;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getFirstname()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;firstname;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setFirstname(String&nbsp;firstname)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.firstname&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;firstname;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getLastname()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;lastname;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setLastname(String&nbsp;lastname)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.lastname&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;lastname;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br></span></div>
<br>TUser.java<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;cn.blogjava.component;<br><br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;TUser&nbsp;&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;java.io.Serializable&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Integer&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Integer&nbsp;age;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Name&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Contact&nbsp;contact;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Integer&nbsp;getAge()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;age;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setAge(Integer&nbsp;age)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Contact&nbsp;getContact()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;contact;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setContact(Contact&nbsp;contact)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.contact&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;contact;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Integer&nbsp;getId()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setId(Integer&nbsp;id)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Name&nbsp;getName()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setName(Name&nbsp;name)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>}</span></div>
<br>4.测试类<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;cn.blogjava.component;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.List;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.hibernate.HibernateException;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.hibernate.Query;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.hibernate.Session;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.hibernate.SessionFactory;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.hibernate.Transaction;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.hibernate.cfg.Configuration;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;junit.framework.TestCase;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;junit.framework.Assert;<br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;HibernateTest&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;TestCase&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setUp(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;config&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Configuration().configure();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SessionFactory&nbsp;sessionFactory&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;config.buildSessionFactory();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sessionFactory.openSession();<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete();</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;tearDown()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;delete(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;tran&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;hql&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;delete&nbsp;TUser</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;session.beginTransaction();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;query&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;session.createQuery(hql);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ret&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;query.executeUpdate();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Delete&nbsp;records&nbsp;=&gt;&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;ret);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran.commit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.fail(e.getMessage());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tran&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran.rollback();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(HibernateException&nbsp;e2)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e2.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testInsert(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;tran&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">session&nbsp;is&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;session);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;session.beginTransaction();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">user1</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TUser&nbsp;user&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;TUser();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setAge(</span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Name();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name.setFirstname(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name.setLastname(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setName(name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact&nbsp;contact&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Contact();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact.setAddress(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dalian</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact.setTel(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">42689334</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact.setZipcodes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">116023</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setContact(contact);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(user);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">user2</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TUser&nbsp;user2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;TUser();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user2.setAge(</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;name2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Name();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name2.setFirstname(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bai</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name2.setLastname(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user2.setName(name2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact&nbsp;contact2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Contact();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact2.setAddress(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">beijing</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact2.setTel(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">12345678</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact2.setZipcodes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">100010</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user2.setContact(contact2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(user2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.flush();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran.commit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.assertEquals(user.getId().intValue()&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.fail(e.getMessage());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tran&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran.rollback();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(HibernateException&nbsp;e2)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e2.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testSelect(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;hql&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;from&nbsp;TUser&nbsp;where&nbsp;age=25&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;userList&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;session.createQuery(hql).list();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TUser&nbsp;user&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(TUser)userList.get(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Contact&nbsp;contact&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;user.getContact();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.assertEquals(contact.getAddress(),&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dalian</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.assertEquals(user.getName().getFirstname(),&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.fail(e.getMessage());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
</div>
<img src ="http://www.blogjava.net/topquan/aggbug/61886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 00:49 <a href="http://www.blogjava.net/topquan/articles/61886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Hibernate Tool执行Hql语句</title><link>http://www.blogjava.net/topquan/articles/61884.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 16:47:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61884.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61884.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61884.html</trackback:ping><description><![CDATA[<div class=postTitle>&nbsp;1.首先，打开Hibernate Configurations视图。<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_Q9XKnMSs.jpg"><br><br>2.在视图中的配置上，点击右键，编辑配置，配置如下<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_Tn0lkJM6.jpg"><br><br><br>3.在配置上，点击右键，选择HQL Scratchpad，打开HQL语句编辑窗口<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_O2SOArlA.jpg"><br><br>4.可以通过Hibernate Dynamic Query Translator，查看最终执行的SQL语句。<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_tzuipWQa.jpg"><br><br>5.可以通过Query Parameters来设置查询参数<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_K0ibeOTQ.jpg"><br><br>6.可以通过Hibernate Query Result来查看查询结果<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_Rmmmep8v.jpg"><br><br>7.结合property视图，看得更清楚<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/50/500_LQ7pdS31.jpg"></div>
<img src ="http://www.blogjava.net/topquan/aggbug/61884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 00:47 <a href="http://www.blogjava.net/topquan/articles/61884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对多数据关联 </title><link>http://www.blogjava.net/topquan/articles/61882.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 16:44:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61882.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61882.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61882.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一对多数据关联一.单向一对多数据关联一个用户有多个地址，在用户类TUser中包含地址类TAddress集合。1.数据模型2.表定义sqluse&nbsp;sample;DROP&nbsp;TABLE&nbsp;T_Address;DROP&nbsp;TABLE&nbsp;T_User;CREATE&nbsp;TABLE&nbsp;T_User&nbsp;(&nbsp;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/topquan/articles/61882.html'>阅读全文</a><img src ="http://www.blogjava.net/topquan/aggbug/61882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 00:44 <a href="http://www.blogjava.net/topquan/articles/61882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对一数据关联(二) </title><link>http://www.blogjava.net/topquan/articles/61881.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 16:42:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61881.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61881.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61881.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 唯一外键关联一.单向一对一关联1.数据模型如下图所示：2.数据表sqlDROP&nbsp;TABLE&nbsp;T_User;DROP&nbsp;TABLE&nbsp;T_Group;CREATE&nbsp;TABLE&nbsp;T_Group&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;INT&nbsp;NOT&nbsp;N...&nbsp;&nbsp;<a href='http://www.blogjava.net/topquan/articles/61881.html'>阅读全文</a><img src ="http://www.blogjava.net/topquan/aggbug/61881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 00:42 <a href="http://www.blogjava.net/topquan/articles/61881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对一数据关联(一) </title><link>http://www.blogjava.net/topquan/articles/61880.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61880.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61880.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61880.html</trackback:ping><description><![CDATA[<div class=postTitle>对于ORM而言，一个重要的特性就是对实体之间关联关系的管理。数据关联是ORM一个重要的特征，但往往也是导致性能低下的原因，在开发中要特别注意这一点。<br><br>一对一关联有两种类型：主键关联和唯一外键关联<br><br>一.主键关联：<br>一对一主键关联形式，即两张关联表通过主键形成一对一映射关系。<br>例如，一个中国公民只能有一份护照。<br><br>1.数据模型如下<br><img src="http://photo5.fotolog.net.cn/userimages/65/73/s/seecolor/49/500_v4gwwf5p.jpg"><br><br><br>2.表定义sql</div>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">DROP</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">TABLE</span> <span style="COLOR: #000000">&nbsp;T_User;<br></span><span style="COLOR: #0000ff">DROP</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">TABLE</span> <span style="COLOR: #000000">&nbsp;T_Passport;<br><br></span><span style="COLOR: #0000ff">CREATE</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">TABLE</span> <span style="COLOR: #000000">&nbsp;T_Passport&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #808080">NOT</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">NULL</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;serial&nbsp;</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span> <span style="COLOR: #000000">(</span> <span style="FONT-WEIGHT: bold; COLOR: #800000">30</span> <span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;expiry&nbsp;</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;</span> <span style="COLOR: #0000ff">PRIMARY</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">KEY</span> <span style="COLOR: #000000">&nbsp;(id)<br>);<br><br></span><span style="COLOR: #0000ff">CREATE</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">TABLE</span> <span style="COLOR: #000000">&nbsp;T_User&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #808080">NOT</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">NULL</span> <span style="COLOR: #000000">&nbsp;AUTO_INCREMENT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;name&nbsp;</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span> <span style="COLOR: #000000">(</span> <span style="FONT-WEIGHT: bold; COLOR: #800000">50</span> <span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;age&nbsp;</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;</span> <span style="COLOR: #0000ff">PRIMARY</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">KEY</span> <span style="COLOR: #000000">&nbsp;(id)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;</span> <span style="COLOR: #0000ff">INDEX</span> <span style="COLOR: #000000">&nbsp;(id)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;</span> <span style="COLOR: #0000ff">CONSTRAINT</span> <span style="COLOR: #000000">&nbsp;FK_T_User_1&nbsp;</span> <span style="COLOR: #0000ff">FOREIGN</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">KEY</span> <span style="COLOR: #000000">&nbsp;(id)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">REFERENCES</span> <span style="COLOR: #000000">&nbsp;T_Passport&nbsp;(id)<br>);<br><br></span></div>
<p><br><br>3.POJO类<br>TUser.java<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span> <span style="COLOR: #000000">&nbsp;cn.blogjava.start;<br><br></span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">&nbsp;TUser&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">implements</span> <span style="COLOR: #000000">&nbsp;java.io.Serializable&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">&nbsp;Fields&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;age;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;String&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;TPassport&nbsp;passport;<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">&nbsp;Constructors</span> <span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;getAge()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;age;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setAge(Integer&nbsp;age)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.age&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;age;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;TPassport&nbsp;getPassport()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;passport;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setPassport(TPassport&nbsp;passport)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.passport&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;passport;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">/**</span> <span style="COLOR: #008000">&nbsp;default&nbsp;constructor&nbsp;</span> <span style="COLOR: #008000">*/</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;TUser()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">/**</span> <span style="COLOR: #008000">&nbsp;constructor&nbsp;with&nbsp;id&nbsp;</span> <span style="COLOR: #008000">*/</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;TUser(Integer&nbsp;id)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.id&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">&nbsp;Property&nbsp;accessors</span> <span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;getId()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setId(Integer&nbsp;id)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.id&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;String&nbsp;getName()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.name;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setName(String&nbsp;name)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.name&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>}</span> </div>
<p><br>TPassport.java<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span> <span style="COLOR: #000000">&nbsp;cn.blogjava.start;<br><br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;java.io.Serializable;<br><br></span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">&nbsp;TPassport&nbsp;</span> <span style="COLOR: #0000ff">implements</span> <span style="COLOR: #000000">&nbsp;Serializable&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;String&nbsp;serial;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;expiry;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;TUser&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;getExpiry()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;expiry;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setExpiry(Integer&nbsp;expiry)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.expiry&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;expiry;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;Integer&nbsp;getId()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setId(Integer&nbsp;id)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.id&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;String&nbsp;getSerial()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;serial;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setSerial(String&nbsp;serial)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.serial&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;serial;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;TUser&nbsp;getUser()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setUser(TUser&nbsp;user)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">this</span> <span style="COLOR: #000000">.user&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br></span></div>
<p><br>3.配置文件<br>TUser.hbm.xml<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;?</span> <span style="COLOR: #ff00ff">xml&nbsp;version="1.0"</span> <span style="COLOR: #0000ff">?&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;!</span> <span style="COLOR: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">hibernate-mapping</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">class&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="cn.blogjava.start.TUser"</span> <span style="COLOR: #ff0000">&nbsp;table</span> <span style="COLOR: #0000ff">="T_User"</span> <span style="COLOR: #ff0000">&nbsp;catalog</span> <span style="COLOR: #0000ff">="sample"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">id&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="id"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="integer"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">column&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="id"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">generator&nbsp;</span> <span style="COLOR: #ff0000">class</span> <span style="COLOR: #0000ff">="native"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">id</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="name"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="string"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">column&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="name"</span> <span style="COLOR: #ff0000">&nbsp;length</span> <span style="COLOR: #0000ff">="100"</span> <span style="COLOR: #ff0000">&nbsp;not-null</span> <span style="COLOR: #0000ff">="true"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="age"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="java.lang.Integer"</span> <span style="COLOR: #ff0000">&nbsp;column</span> <span style="COLOR: #0000ff">="age"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </span><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">one-to-one&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="passport"</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span> <span style="COLOR: #0000ff">="cn.blogjava.start.TPassport"</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cascade</span> <span style="COLOR: #0000ff">="all"</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outer-join</span> <span style="COLOR: #0000ff">="true"</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> </font><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">class</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">hibernate-mapping</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span></div>
<p><br>TPassport.hbm.xml<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;?</span> <span style="COLOR: #ff00ff">xml&nbsp;version="1.0"</span> <span style="COLOR: #0000ff">?&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;!</span> <span style="COLOR: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<br>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">hibernate-mapping</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">class&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="cn.blogjava.start.TPassport"</span> <span style="COLOR: #ff0000">&nbsp;table</span> <span style="COLOR: #0000ff">="T_Passport"</span> <span style="COLOR: #ff0000">&nbsp;catalog</span> <span style="COLOR: #0000ff">="sample"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </span><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">id&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="id"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="integer"</span> <span style="COLOR: #ff0000">&nbsp;column</span> <span style="COLOR: #0000ff">="id"</span> <span style="COLOR: #0000ff">&gt;</span> </font><span style="COLOR: #000000"><br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </span><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">generator&nbsp;</span> <span style="COLOR: #ff0000">class</span> <span style="COLOR: #0000ff">="foreign"</span> <span style="COLOR: #0000ff">&gt;</span> </font><span style="COLOR: #000000"><br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </span><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">param&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="property"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">user</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">param</span> <span style="COLOR: #0000ff">&gt;</span> </font><span style="COLOR: #000000"><br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </span><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">generator</span> <span style="COLOR: #0000ff">&gt;</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">id</span> <span style="COLOR: #0000ff">&gt;</span> </font><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="serial"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="string"</span> <span style="COLOR: #ff0000">&nbsp;column</span> <span style="COLOR: #0000ff">="serial"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="expiry"</span> <span style="COLOR: #ff0000">&nbsp;type</span> <span style="COLOR: #0000ff">="java.lang.Integer"</span> <span style="COLOR: #ff0000">&nbsp;column</span> <span style="COLOR: #0000ff">="expiry"</span> <span style="COLOR: #ff0000">&nbsp;</span> <span style="COLOR: #0000ff">/&gt;</span> <span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></span> <font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">one-to-one&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="user"</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span> <span style="COLOR: #0000ff">="cn.blogjava.start.TUser"</span> </font><font style="BACKGROUND-COLOR: #deb887"><span style="COLOR: #ff0000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constrained</span> <span style="COLOR: #0000ff">="true"</span> </font><span style="COLOR: #ff0000"><br><font style="BACKGROUND-COLOR: #deb887">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </span><span style="COLOR: #0000ff"><font style="BACKGROUND-COLOR: #deb887">/&gt;</font> </span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">class</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">hibernate-mapping</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span></div>
<p><br>4.测试代码<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span> <span style="COLOR: #000000">&nbsp;cn.blogjava.start;<br><br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;java.util.List;<br><br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;junit.framework.Assert;<br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;junit.framework.TestCase;<br><br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;org.hibernate.HibernateException;<br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;org.hibernate.Session;<br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;org.hibernate.SessionFactory;<br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;org.hibernate.Transaction;<br></span><span style="COLOR: #0000ff">import</span> <span style="COLOR: #000000">&nbsp;org.hibernate.cfg.Configuration;<br><br><br></span><span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">&nbsp;HibernateTest&nbsp;</span> <span style="COLOR: #0000ff">extends</span> <span style="COLOR: #000000">&nbsp;TestCase&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">null</span> <span style="COLOR: #000000">;<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">protected</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;setUp()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">try</span> <span style="COLOR: #000000">&nbsp;{<br></span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;config&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;Configuration().configure();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SessionFactory&nbsp;sessionFactory&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;config.buildSessionFactory();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;sessionFactory.openSession();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span> <span style="COLOR: #0000ff">catch</span> <span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">protected</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;tearDown()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">try</span> <span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span> <span style="COLOR: #0000ff">catch</span> <span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;testInsert()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;tran&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">null</span> <span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">try</span> <span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TUser&nbsp;user&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;TUser();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setName(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">byf</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setAge(</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;Integer(</span> <span style="COLOR: #000000">26</span> <span style="COLOR: #000000">));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TPassport&nbsp;passport&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;TPassport();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passport.setSerial(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">PCN123456</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passport.setExpiry(</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;Integer(</span> <span style="COLOR: #000000">20081010</span> <span style="COLOR: #000000">));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">设置相互关联</span> <span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setPassport(passport);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passport.setUser(user);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;session.beginTransaction();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.save(user);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.flush();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran.commit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.assertEquals(user.getId().intValue()</span> <span style="COLOR: #000000">&gt;</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">&nbsp;,</span> <span style="COLOR: #0000ff">true</span> <span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span> <span style="COLOR: #0000ff">catch</span> <span style="COLOR: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;{<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.fail(e.getMessage());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(tran&nbsp;</span> <span style="COLOR: #000000">!=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">null</span> <span style="COLOR: #000000">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">try</span> <span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tran.rollback();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span> <span style="COLOR: #0000ff">catch</span> <span style="COLOR: #000000">&nbsp;(Exception&nbsp;e1)&nbsp;{<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">/**</span> <span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;对象读取测试(Select方法)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">*/</span> <span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">&nbsp;testSelect(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;hql&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">&nbsp;from&nbsp;TUser&nbsp;where&nbsp;name='byf'</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">try</span> <span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;userList&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;session.createQuery(hql).list();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TUser&nbsp;user&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;(TUser)userList.get(</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">user&nbsp;name&nbsp;is&nbsp;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">&nbsp;user.getName());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">passport&nbsp;serial&nbsp;NO.&nbsp;is&nbsp;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">&nbsp;user.getPassport().getSerial());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.assertEquals(user.getName(),&nbsp;</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">byf</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span> <span style="COLOR: #0000ff">catch</span> <span style="COLOR: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.fail(e.getMessage());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
<img src ="http://www.blogjava.net/topquan/aggbug/61880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 00:41 <a href="http://www.blogjava.net/topquan/articles/61880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HQL 语言基本用法</title><link>http://www.blogjava.net/topquan/articles/61878.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Fri, 04 Aug 2006 16:32:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/61878.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/61878.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/61878.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/61878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/61878.html</trackback:ping><description><![CDATA[<div class=postTitle><a class=postTitle2 id=viewpost1_TitleUrl href="http://www.blogjava.net/myblog/archive/2006/07/07/56865.html"><font color=#56b6e9>HQL</font> </a></div>
例如对于TUser类<br><br>1.实体查询<br><font style="BACKGROUND-COLOR: #deb887">String hql = " from TUser";</font><br><br>执行这条语句会返回TUser以及TUser子类的纪录。<br><br><font style="BACKGROUND-COLOR: #deb887">hql = "from java.lang.Object"</font><br>会返回数据库中所有库表的纪录。<br><br>where 语句<br><font style="BACKGROUND-COLOR: #deb887">hql = "from TUser as user where user.name='yyy'";</font><br><br>其中，as可以省略也一样<br><font style="BACKGROUND-COLOR: #deb887">hql = "from TUser user where user.name='yyy'";</font><br><br>where子句中，我们可以通过比较运算符设定条件，如：<br>=, &lt;&gt;, &gt;, &lt;, &gt;=, &lt;=, between, not between, in, not in, is, like等。<br><br>2.属性查询<br><font style="BACKGROUND-COLOR: #deb887">List list = session.createQuery("select user.name, user.age&nbsp;from TUser as user").list();</font><br><br><font style="BACKGROUND-COLOR: #deb887">还可以在HQL中动态构造对象实例的方法，将数据封装。<br>List list = session.createQuery("select new TUser(user.name, user.age) from TUser as user").list();<br>Iterator it = list.iterator();<br></font><font style="BACKGROUND-COLOR: #deb887">while(it.hasNext() ) {<br>&nbsp;&nbsp;&nbsp;&nbsp; TUser user = (TUser)it.next();<br>&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(user.getName());<br>}<br><font style="BACKGROUND-COLOR: #ffffff">但是要注意这里的TUser对象只是对name和age属性的封装，其他状态均未赋值，所以不能用它来进行更新操作。<br></font><br><font style="BACKGROUND-COLOR: #ffffff">也可以在HQL的Select子句中使用统计函数<br></font><font style="BACKGROUND-COLOR: #ffffff">"select count(*) ,min(user.age) from TUser as user"<br><br>也可以使用distinct关键字来删除重复纪录。<br>select distinct user.name from TUser as user;<br><br>3.实体的更新与删除<br>hibernate 2中需要先查询出实体，设置属性后再保存。<br><br>hibernate 3中，提供了更灵活的方式(bulk delete/update)<br>更新：<br>&nbsp;&nbsp;&nbsp; Query query = session.createQuery("update TUser set age=18 where id=1");<br>&nbsp;&nbsp;&nbsp; query.executeUpdate();<br>删除：<br></font><font style="BACKGROUND-COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffff" color=#000000>&nbsp;&nbsp;&nbsp; session.createQuery("delete&nbsp;TUser where age&gt;=18");<br>&nbsp;&nbsp;&nbsp; query.executeUpdate();<br><br>4.分组与排序<br>Order by子句：<br>&nbsp;&nbsp;&nbsp; from TUser user order by user.name, user.age&nbsp;desc<br>Group by子句和Having子句<br>&nbsp;&nbsp;&nbsp; "select count(user), user.age from TUser user group by user.age having count(user)&gt;10"<br><br>5.参数邦定<br>通过顺序占位符?来填充参数：<br>&nbsp;1)hibernate 2 中通过session.find方法来填充<br>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; session.find("from TUser user where user.name=?", "Erica", Hibernate.STRING);<br>&nbsp; 多个参数的情况：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] args = new Object[] {"Erica", new Integer(20)};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type[] types = new Type{Hibernate.STRING, Hibernate.INTEGER};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.find("from TUser user where user.name=? and user.age=?", args, types);<br><br>2)通过Query接口进行参数填充：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query query = session.createQuery("from TUser user where user.name=? and user.age&gt;?");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setString(0,"Erica");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setInteger(1, 20);<br><br>通过引用占位符来填充参数：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String hql = "from TUser where name=:name";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query query = session.createQuery(hql);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setParameter("name","Erica");<br>&nbsp;<br>甚至可以将查询条件封装为一个JavaBean<br>class UserQuery {<br>&nbsp;&nbsp;&nbsp; private String name;<br>&nbsp;&nbsp;&nbsp; private Integer age;<br>&nbsp;&nbsp;&nbsp; //getter and setter<br>}<br>&nbsp;String hql = "from TUser where name=:name and age=:age";<br>Query query = session.createQuery(hql);<br>UserQuery uq = new UserQuery();<br>uq.setName("Erica");<br>uq.setAge(new Integer(20));<br><br>query.setProperties(uq); //会调用里面的getter?<br>query.iterate();<br><br>6.联合查询<br>也可以使用 inner join,left outer join, right out join, full join<br>排列组合：form TUser, TAddress<br></font></font></font>
<img src ="http://www.blogjava.net/topquan/aggbug/61878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-08-05 00:32 <a href="http://www.blogjava.net/topquan/articles/61878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Hibernate开发Blog实例分析</title><link>http://www.blogjava.net/topquan/articles/45021.html</link><dc:creator>topquan</dc:creator><author>topquan</author><pubDate>Mon, 08 May 2006 07:39:00 GMT</pubDate><guid>http://www.blogjava.net/topquan/articles/45021.html</guid><wfw:comment>http://www.blogjava.net/topquan/comments/45021.html</wfw:comment><comments>http://www.blogjava.net/topquan/articles/45021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/topquan/comments/commentRss/45021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/topquan/services/trackbacks/45021.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 开发工具采用 MYECLIPS3.6 ，首先是建立项目，导入 STRUTS+HIBERNATE 包，然后配置 SRC 跟目录下的 Hibernate.cfg.xml. 我采用的是 MYSQL数据库 ，所以配置如下： 　　 　　 &lt;hibernate-configuration&gt; 　　 &lt;session-factory&gt; 　　 &lt;!-- properties --&gt...&nbsp;&nbsp;<a href='http://www.blogjava.net/topquan/articles/45021.html'>阅读全文</a><img src ="http://www.blogjava.net/topquan/aggbug/45021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/topquan/" target="_blank">topquan</a> 2006-05-08 15:39 <a href="http://www.blogjava.net/topquan/articles/45021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>