﻿<?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-O(∩_∩)O鱼阳~，欢迎您的到来!-随笔分类-Hibernate</title><link>http://www.blogjava.net/1504/category/32239.html</link><description>我在等待中守望着，也在等待中追逐着，守望着我的理想，追逐着我的未来。梦是心的舞台，心有多大，舞台有多大。不轻易服输，不轻言放弃。QQ:82424805,MSN:CF1504@Hotmail.com,E-mail:yyk1504@163.com</description><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2009 07:24:06 GMT</lastBuildDate><pubDate>Wed, 15 Apr 2009 07:24:06 GMT</pubDate><ttl>60</ttl><item><title>Hibernate配置手册【转贴】</title><link>http://www.blogjava.net/1504/archive/2009/04/15/265664.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Wed, 15 Apr 2009 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2009/04/15/265664.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/265664.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2009/04/15/265664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/265664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/265664.html</trackback:ping><description><![CDATA[<span  style="color: #4b4b4b; font-family: Verdana; font-size: 13px; line-height: 19px; "><font size="3">http://blog.csdn.net/tutugogo/archive/2006/05/17/742323.aspx</font><br />
<p>Hibernate.cfg.xml配置文件：<br />
&lt;?xml version="1.0" encoding="utf-8"?><br />
&lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "hibernate-configuration-2.0.dtd"><br />
&lt;hibernate-configuration><br />
&#160;&#160;&#160; &lt;session-factory><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;!-- properties --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;!-- jndi --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="connection.datasource">java:comp/env/jdbc/quickstart&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="dialect">net.sf.hibernate.dialect.SQLServerDialect&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;!-- jdbc<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=pubs&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="connection.username">sa&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="connection.password">&lt;/property><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="jdbc.fetch_size">50&lt;/property>&lt;!-- 一次读的数据库记录数 --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="jdbc.batch_size">30&lt;/property>&lt;!-- 设定对数据库进行批量删除 --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="show_sql">true&lt;/property>&lt;!-- 将Hibernate发送给数据库的sql显示出来 --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;!-- Mapping files --><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mapping resource="cat.hbm.xml"/><br />
&#160;&#160;&#160; &lt;/session-factory><br />
&lt;/hibernate-configuration></p>
<br />
<p>数据库表主键的知识点：<br />
Generator 为每个 POJO 的实例提供唯一标识。一般情况，我们使用&#8220;native&#8221;。class 表示采用由生成器接口net.sf.hibernate.id.IdentifierGenerator 实现的某个实例，其中包括：</p>
<br />
<p>&#8220;assigned&#8221;<br />
主键由外部程序负责生成，在 save() 之前指定一个。</p>
<br />
<p>&#8220;hilo&#8221;<br />
通过hi/lo 算法实现的主键生成机制，需要额外的数据库表或字段提供高位值来源。</p>
<br />
<p>&#8220;seqhilo&#8221;<br />
与hilo 类似，通过hi/lo 算法实现的主键生成机制，需要数据库中的 Sequence，适用于支持 Sequence 的数据库，如Oracle。</p>
<br />
<p>&#8220;increment&#8221;<br />
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量，以保存着当前的最大值，之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是：不能在集群下使用。</p>
<br />
<p>&#8220;identity&#8221;<br />
采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL 中的主键生成机制。</p>
<br />
<p>&#8220;sequence&#8221;<br />
采用数据库提供的 sequence 机制生成主键。如 Oralce 中的Sequence。</p>
<br />
<p>&#8220;native&#8221;<br />
由 Hibernate 根据使用的数据库自行判断采用 identity、hilo、sequence 其中一种作为主键生成方式。</p>
<br />
<p>&#8220;uuid.hex&#8221;<br />
由 Hibernate 基于128 位 UUID 算法 生成16 进制数值（编码后以长度32 的字符串表示）作为主键。</p>
<br />
<p>&#8220;uuid.string&#8221;<br />
与uuid.hex 类似，只是生成的主键未进行编码（长度16），不能应用在 PostgreSQL 数据库中。</p>
<br />
<p>&#8220;foreign&#8221;<br />
使用另外一个相关联的对象的标识符作为主键。</p>
<br />
<p>以下举例：<br />
1、指定参数的情况：<br />
&#160;&#160;&#160; &lt;id name="id" unsaved-value="0">&#160;<br />
&#160;&#160;&#160;&#160;&#160; &lt;generator class="sequence"><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;param name="sequence">SEQ_CHILD&lt;/param><br />
&#160;&#160;&#160;&#160;&#160; &lt;/generator><br />
&lt;/id><br />
使用的是sequence，适合oracle数据库；</p>
<br />
<p>2、对于sql server2000中的数据库子增字段,在配置文件使用下列方法实现：<br />
&lt;id name="id" type="long" unsaved-value="0"><br />
&#160;&#160;&#160;&#160; &lt;column name="id" sql-type="numeric" not-null="true" /><br />
&#160;&#160;&#160;&#160; &lt;generator class="identity" />&#160;<br />
&lt;/id><br />
这里主要是:identity:代表由sql server2000数据库自己提供子增字段.如果要hibernate自己提供,则用increment关键字来实现</p>
<br />
<p>3、如果表中的主键用字符串类型:可以用hibernate自己提供的方法实现主键唯一:<br />
&#160; &lt;id name="id" type="string" unsaved-value="null"><br />
&#160;&#160;&#160;&#160;&#160; &lt;column name="cid" sql-type="char(32)" not-null="true" /><br />
&#160;&#160;&#160;&#160;&#160; &lt;generator class="uuid.hex" /><br />
&#160; &lt;/id><br />
使用的是uuid.hex: 采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库。</p>
<br />
<p>重要的知识点:<br />
1. 如果有部门表,有员工表,员工表中有dep_id,则表部门类和员工类是one-to-many的关系:<br />
&#160;&#160; 可以使用:&#160; ( 在部门类department中使用下列)<br />
&#160;&#160; Department类:&#160;&#160;<br />
&#160;&#160;&#160;&#160; /**&#160; 部门的所有员工&#160;&#160; */<br />
&#160;&#160;&#160; private Set staffs = new TreeSet();<br />
&#160;&#160;&#160;&#160;<br />
&#160;&#160;&#160; xml的文件:<br />
&#160;&#160;&#160;&#160;&#160; &lt;set name="staffs" ><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;key column="dep_id"/><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;one-to-many class="hbp.sys.data.Staff"/><br />
&#160;&#160;&#160;&#160;&#160; &lt;/set><br />
&#160;&#160;&#160;&#160;&#160; 如果是list,需要用索引&lt;index> &lt;/index>,具体其中的含义,不是很明白.待以后研究<br />
&#160;&#160;&#160;&#160;&#160;&#160;<br />
&#160;2. 如果部门要有一个负责人,即部门表(tb_department)中有一个字段:staff_id.<br />
&#160;&#160;&#160;&#160; 那么表示部门和负责人之间的关系是many-to-one的关系<br />
&#160;&#160;&#160;&#160; Department类:&#160;<br />
&#160;&#160;&#160;&#160;&#160; /** 部门负责人id */<br />
&#160;&#160;&#160; private Staff staff;<br />
&#160;&#160;&#160;&#160;<br />
&#160;&#160;&#160; xml 文件<br />
&#160;&#160;&#160;&#160; &lt;many-to-one name="staff" class="hbp.sys.data.Staff"&#160; column="staff_id"/>&#160;&#160;<br />
&#160;&#160;<br />
&#160;3. 多对多关系,一般我们是做一个中间关联表.我用角色和权限做了个例子,<br />
&#160;&#160;&#160;&#160;&#160; Right(id,name)&#160;&#160;&#160;&#160; Role(id,name)&#160;&#160; 中间表:tb_role_right(role_id,right_id)<br />
&#160;&#160;&#160;&#160;&#160; Right类中有一个Role的集合:private Set roles=new TreeSet();<br />
&#160;&#160;&#160;&#160;&#160; Role类中也有一个Right的集合:private Set rights=new TreeSet();<br />
&#160;&#160;&#160;&#160;&#160; 则两者是明显的多对多关系.使用many-to-many来实现;<br />
&#160;&#160;&#160;&#160;&#160; xml文件中<br />
&#160;&#160;&#160;&#160;&#160; right.hbm.xml:如下:<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;set name="roles" table="tb_role_right" cascade="all"><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;key column="right_id"/><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;many-to-many column="role_id" class="hbp.sys.data.Role"/><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/set>&#160;<br />
&#160;&#160;&#160;&#160;&#160; role.hbm.xml文件中类似:<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;set name="rights" table="tb_role_right" cascade="all"><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;key column="role_id"/><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;many-to-many column="right_id" class="hbp.sys.data.Right"/><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/set></p>
<br />
<p>4. 几个值得注意的问题:<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; a)在xml?映射文件中,写类的名字时一定用类的全名:即:包+类名如:(hbp.sys.data.Staff),这个错误使我费了半天劲.:(<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160; b)我在写实现基本DAO操作时,写了<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; session.delete("from Right as right where right.id="+id);&#160;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 程序死活报错,我折腾了半天,跟踪到底,才恍然大悟,hibernate在解析sql语句的时候把<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 其中的right,当成了数据库中的右连接("保留字"),唉,这种关键字,不能随便用啊,:)</p>
<br />
<p>5. hibernate中HQL语言的查询根据你的sql的不同而返回不同的对象类型.<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果你使用session.find(String hql)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 一般会返回一个List,如:from Staff staff;返回的是包含所有的员工对象的集合<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如你的hql为:select count(*) from Staff staff;则返回的是一个Integer对象<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果你使用的hql为:select count(distinct staff.name),count(*) from Staff staff;则返回的是一个Object<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 即Object[],需要先把他转换成Object[],然后在取[0],[1].<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 这种设计我不知道hibernate是如何处理的,感觉既好也不好.好的是可以使用一个find获得任意查询<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 不好在于根据hql来处理返回结果,容易出错.</p>
</span>
<img src ="http://www.blogjava.net/1504/aggbug/265664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2009-04-15 09:29 <a href="http://www.blogjava.net/1504/archive/2009/04/15/265664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HSQL查询乱码【转总结】</title><link>http://www.blogjava.net/1504/archive/2009/02/22/256104.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Sun, 22 Feb 2009 11:50:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2009/02/22/256104.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/256104.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2009/02/22/256104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/256104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/256104.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt;"><span style="font-size: 12pt;">在spring+hibernate中：</span><span style="font-size: 12pt;">Hql</span><span style="font-size: 12pt;">中有中文参数（如</span><span style="font-size: 12pt;">from&#160;test as c where c.name='张三'</span><span style="font-size: 12pt;">）的话被翻译成</span><span style="font-size: 12pt;">sql</span><span style="font-size: 12pt;">的时候会出现乱码，解决办法是在</span><span style="font-size: 12pt;">application.xml</span><span style="font-size: 12pt;">中加入以下语句：
<div class="dp-highlighter">
<ol class="dp-xml">
    <li class="alt"><span class="tag">&lt;<span class="tag-name">prop</span>&#160;<span class="attribute">key</span>=<span class="attribute-value">"hibernate.query.factory_class"</span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;org.hibernate.hql.classic.ClassicQueryTranslatorFactory &#160;&#160;
    </li>
    <li class="alt">prop<span class="tag">></span>&#160;&#160; </li>
</ol>
</div>
在hibernate.cfg.xml &#160; 中加入下面的属性 &#160; <br />
&#160; &#160; <br />
&#160; &lt;property &#160; name="hibernate.query.factory_class"> &#160; <br />
&#160; &#160; <br />
&#160; &#160; &#160; &#160; &#160; &#160; org.hibernate.hql.classic.ClassicQueryTranslatorFactory &#160; <br />
&#160; &#160; <br />
&#160; &lt;/property>&#160;&#160;</span></span>
<img src ="http://www.blogjava.net/1504/aggbug/256104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2009-02-22 19:50 <a href="http://www.blogjava.net/1504/archive/2009/02/22/256104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate一对多双向关联及inverse的作用[整理总结]</title><link>http://www.blogjava.net/1504/archive/2009/02/22/256095.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Sun, 22 Feb 2009 11:36:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2009/02/22/256095.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/256095.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2009/02/22/256095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/256095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/256095.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;" twffan="done"><a href="/Files/1504/Hibernate-onetomany.txt">http://www.blogjava.net/Files/1504/Hibernate-onetomany.txt</a>一个一对多的完整例子:资料来源网络,进行整理.<br />
people表：{peopleId,name}<br />
<br />
address表：{addressId,peopleId,addressName,codeNumber}<br />
<br />
</span>
<p><span style="font-size: 10pt;" twffan="done">package com.gpdi.test;</span></p>
<p><span style="font-size: 10pt;" twffan="done">import org.hibernate.Session;</span></p>
<p><span style="font-size: 10pt;" twffan="done">import com.gpdi.orm.object.Address;<br />
import com.gpdi.orm.object.People;</span></p>
<p><span style="font-size: 10pt;" twffan="done">public class Testp {</span></p>
<p><span style="font-size: 10pt;" twffan="done">&#160;/**<br />
&#160; * @param args<br />
&#160; */<br />
&#160;public static void main(String[] args) <br />
&#160;{<br />
&#160;&#160;People people = new People(); <br />
&#160;&#160;people.setName("linda"); <br />
&#160;&#160;Address address = new Address(); <br />
&#160;&#160;address.setAddressName("yunnan"); <br />
&#160;&#160;address.setCodeNumber("564123"); <br />
&#160;&#160;address.setPeople(people); <br />
&#160;&#160;people.getAddresses().add(address); <br />
&#160;&#160;Session session = HibernateSessionFactory.currentSession(); <br />
&#160;&#160;session.beginTransaction(); <br />
&#160;&#160;session.save(people); <br />
&#160;&#160;session.getTransaction().commit(); </span></p>
<p><span style="font-size: 10pt;" twffan="done">&#160;}</span></p>
<p><span style="font-size: 10pt;" twffan="done">}<br />
</span></p>
<span style="font-size: 10pt;" twffan="done"><font size="3">People</font>.hbm.xml<br />
</span>
<p><span style="font-size: 10pt;" twffan="done">&lt;?xml version="1.0" encoding="utf-8"?><br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br />
&lt;!-- <br />
&#160;&#160;&#160; Mapping file autogenerated by MyEclipse - Hibernate Tools<br />
--><br />
&lt;hibernate-mapping><br />
&#160;&#160;&#160; &lt;class name="com.gpdi.orm.object.People" table="People"><br />
&#160;&#160;&lt;id name="id" column="peopleId" unsaved-value="0" > <br />
&#160;&#160;&lt;generator class="increment"> <br />
&#160;&#160;&lt;/generator> <br />
&#160;&#160;&lt;/id> <br />
&#160;&#160;&lt;property name="name" column="name">&lt;/property> <br />
&#160;&#160;&lt;set name="addresses" cascade="save-update"><br />
&#160;&#160;&lt;key column="peopleId" not-null="true" /><br />
&#160;&#160;&lt;one-to-many class="com.gpdi.orm.object.Address"/><br />
&#160;&#160;&lt;/set> </span></p>
<p><span style="font-size: 10pt;" twffan="done">&#160;&#160;&#160; &lt;/class><br />
&lt;/hibernate-mapping><br />
</span></p>
<span style="font-size: 10pt;" twffan="done"><font size="3">People</font>.java<br />
</span>
<p><span style="font-size: 10pt;" twffan="done">package com.gpdi.orm.object;</span></p>
<p><span style="font-size: 10pt;" twffan="done">import java.util.HashSet;<br />
import java.util.Set;</span></p>
<p><span style="font-size: 10pt;" twffan="done">public class People implements java.io.Serializable<br />
{ <br />
&#160;private long id; <br />
&#160;private String name; <br />
&#160;private Set addresses = new HashSet();<br />
&#160;public Set getAddresses() {<br />
&#160;&#160;return addresses;<br />
&#160;}<br />
&#160;public void setAddresses(Set addresses) {<br />
&#160;&#160;this.addresses = addresses;<br />
&#160;}<br />
&#160;public long getId() {<br />
&#160;&#160;return id;<br />
&#160;}<br />
&#160;public void setId(long id) {<br />
&#160;&#160;this.id = id;<br />
&#160;}<br />
&#160;public String getName() {<br />
&#160;&#160;return name;<br />
&#160;}<br />
&#160;public void setName(String name) {<br />
&#160;&#160;this.name = name;<br />
&#160;} </span></p>
<p><span style="font-size: 10pt;" twffan="done">}<br />
</span></p>
<span style="font-size: 10pt;" twffan="done"><font size="3">Address</font>.hbm.xml<br />
</span><span style="font-size: 10pt;" twffan="done"><font size="3"><span style="font-size: 10pt;" twffan="done"><span twffan="done"><font style="font-size: 10pt;" size="3">&lt;?xml version="1.0" encoding="utf-8"?><br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br />
&lt;!-- <br />
&#160;&#160;&#160; Mapping file autogenerated by MyEclipse - Hibernate Tools<br />
--><br />
&lt;hibernate-mapping><br />
&#160;&#160;&#160; &lt;class name="com.gpdi.orm.object.Address" table="Address"><br />
&#160;&lt;id name="id" column="addressId" unsaved-value="0"><br />
&#160;&lt;generator class="increment"><br />
&#160;&lt;/generator><br />
&#160;&lt;/id> <br />
&#160;&lt;many-to-one name="people" column="peopleId" insert="false" update="false">&lt;/many-to-one> <br />
&#160;&lt;property name="addressName" column="addressName">&lt;/property> <br />
&#160;&lt;property name="codeNumber" column="codeNumber">&lt;/property> <br />
&#160;&#160;&#160; &lt;/class><br />
&lt;/hibernate-mapping></font></span></span><br />
</font><font size="3">Address</font>.java<br />
</span><span style="font-size: 10pt;" twffan="done">package com.gpdi.orm.object;<br />
public class Address implements java.io.Serializable<br />
{ <br />
&#160;private long id; <br />
&#160;private People people; <br />
&#160;private String addressName; <br />
&#160;private String codeNumber;<br />
&#160;public String getAddressName() {<br />
&#160;&#160;return addressName;<br />
&#160;}<br />
&#160;public void setAddressName(String addressName) {<br />
&#160;&#160;this.addressName = addressName;<br />
&#160;}<br />
&#160;public String getCodeNumber() {<br />
&#160;&#160;return codeNumber;<br />
&#160;}<br />
&#160;public void setCodeNumber(String codeNumber) {<br />
&#160;&#160;this.codeNumber = codeNumber;<br />
&#160;}<br />
&#160;public long getId() {<br />
&#160;&#160;return id;<br />
&#160;}<br />
&#160;public void setId(long id) {<br />
&#160;&#160;this.id = id;<br />
&#160;}<br />
&#160;public People getPeople() {<br />
&#160;&#160;return people;<br />
&#160;}<br />
&#160;public void setPeople(People people) {<br />
&#160;&#160;this.people = people;<br />
&#160;} <br />
}<br />
</span><span style="font-size: 10pt;" twffan="done">下载例子:整理后<br />
<a href="/Files/1504/one-to-many.rar">一对多的完整例子</a><br />
下载例子:整理前<br />
<a title="文本形式" href="http://www.cnweblog.com/Files/nm1504/Hibernate-onetomany.txt"></a></span><br />
<img src ="http://www.blogjava.net/1504/aggbug/256095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2009-02-22 19:36 <a href="http://www.blogjava.net/1504/archive/2009/02/22/256095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate多对多双向关联映射【转帖】</title><link>http://www.blogjava.net/1504/archive/2009/02/22/256083.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Sun, 22 Feb 2009 11:17:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2009/02/22/256083.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/256083.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2009/02/22/256083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/256083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/256083.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;">转自：http://blog.csdn.net/thinkGhoster/archive/2007/10/24/1841584.aspx<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Hibernate多对多双向关联映射 </span>
<p><span style="font-size: 10pt;">1、数据库结构</span></p>
<p><span style="font-size: 10pt;">&#160;&#160;&#160;&#160;&#160;&#160; category表：{ categoryId , categoryName }</span></p>
<p><span style="font-size: 10pt;">&#160;&#160;&#160;&#160;&#160;&#160; item表：{ itemId , itemName }</span></p>
<p><span style="font-size: 10pt;">&#160;&#160;&#160;&#160;&#160;&#160; category_item表：{ idCategory , idItem}</span></p>
<p><span style="font-size: 10pt;">2、Category.hbm.xml</span></p>
<div style="border-left-color: windowtext; padding-top: 4px; padding-right: 5.4pt; padding-bottom: 4px; padding-left: 5.4pt; background-image: none; background-repeat: repeat; background-attachment: scroll; background-color: #e6e6e6; width: 95%; background-position: 0% 0%; ">
<div><span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">hibernate-mapping</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">class&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="com.persistent.Category"</span><span style="color: #ff0000;">&#160;table</span><span style="color: #0000ff;">="category"</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">id&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="id"</span><span style="color: #ff0000;">&#160;column</span><span style="color: #0000ff;">="categoryId"</span><span style="color: #ff0000;">&#160;unsaved-value</span><span style="color: #0000ff;">="null"</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">generator&#160;</span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="increment"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">generator</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="name"</span><span style="color: #ff0000;">&#160;column</span><span style="color: #0000ff;">="categoryName"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">set&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="items"</span><span style="color: #ff0000;">&#160;table</span><span style="color: #0000ff;">="category_item"</span><span style="color: #ff0000;">&#160;cascade</span><span style="color: #0000ff;">="all"</span><span style="color: #ff0000;">&#160;lazy</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">key&#160;</span><span style="color: #ff0000;">column</span><span style="color: #0000ff;">="idCategory"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">key</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">many-to-many&#160;</span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="com.persistent.Item"</span><span style="color: #ff0000;">&#160;column</span><span style="color: #0000ff;">="idItem"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">many-to-many</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">set</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">class</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">hibernate-mapping</span><span style="color: #0000ff;">></span></span></div>
</div>
<p><span style="font-size: 10pt;">3、Item.hbm.xml</span></p>
<div style="border-left-color: windowtext; padding-top: 4px; padding-right: 5.4pt; padding-bottom: 4px; padding-left: 5.4pt; background-image: none; background-repeat: repeat; background-attachment: scroll; background-color: #e6e6e6; width: 95%; background-position: 0% 0%; ">
<div><span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">hibernate-mapping</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">class&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="com.persistent.Item"</span><span style="color: #ff0000;">&#160;table</span><span style="color: #0000ff;">="item"</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">id&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="id"</span><span style="color: #ff0000;">&#160;column</span><span style="color: #0000ff;">="itemId"</span><span style="color: #ff0000;">&#160;unsaved-value</span><span style="color: #0000ff;">="null"</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">generator&#160;</span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="increment"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">generator</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="name"</span><span style="color: #ff0000;">&#160;column</span><span style="color: #0000ff;">="itemName"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">set&#160;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="categories"</span><span style="color: #ff0000;">&#160;table</span><span style="color: #0000ff;">="category_item"</span><span style="color: #ff0000;">&#160;lazy</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&#160;inverse</span><span style="color: #0000ff;">="true"</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">key&#160;</span><span style="color: #ff0000;">column</span><span style="color: #0000ff;">="idItem"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">key</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">many-to-many&#160;</span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="com.persistent.Category"</span><span style="color: #ff0000;">&#160;column</span><span style="color: #0000ff;">="idCategory"</span><span style="color: #0000ff;">>&lt;/</span><span style="color: #800000;">many-to-many</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">set</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;</span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">class</span><span style="color: #0000ff;">></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">hibernate-mapping</span><span style="color: #0000ff;">></span></span></div>
</div>
<p><span style="font-size: 10pt;">4、Category.java和Item.java</span></p>
<div style="border-left-color: windowtext; padding-top: 4px; padding-right: 5.4pt; padding-bottom: 4px; padding-left: 5.4pt; background-image: none; background-repeat: repeat; background-attachment: scroll; background-color: #e6e6e6; width: 95%; background-position: 0% 0%; ">
<div><span style="font-size: 10pt;"><img id="_22_102_Open_Image" style="display: inline;" onclick="this.style.display='none'; document.getElementById('_22_102_Open_Text').style.display='none'; document.getElementById('_22_102_Closed_Image').style.display='inline'; document.getElementById('_22_102_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_22_102_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('_22_102_Closed_Text').style.display='none'; document.getElementById('_22_102_Open_Image').style.display='inline'; document.getElementById('_22_102_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff;">public</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&#160;Category&#160;</span><span id="_22_102_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span></span><span id="_22_102_Open_Text" style="display: inline;"><span style="font-size: 10pt;"><span style="color: #000000;">{&#160;&#160;&#160;&#160;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff;">private</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&#160;Long&#160;id;<br />
</span><span style="color: #0000ff;">&#160;&#160;&#160; private</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&#160;String&#160;name;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff;">private</span><span style="color: #000000;">&#160;Set&#160;items&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span></span><span style="color: #000000;"><span style="font-size: 10pt;">&#160;HashSet();<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />...<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img id="_123_207_Open_Image" onclick="this.style.display='none'; document.getElementById('_123_207_Open_Text').style.display='none'; document.getElementById('_123_207_Closed_Image').style.display='inline'; document.getElementById('_123_207_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_123_207_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('_123_207_Closed_Text').style.display='none'; document.getElementById('_123_207_Open_Image').style.display='inline'; document.getElementById('_123_207_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span></span><span style="font-size: 10pt;"><span style="color: #0000ff;">public</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&#160;Item&#160;</span><span id="_123_207_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span></span><span id="_123_207_Open_Text"><span style="font-size: 10pt;"><span style="color: #000000;">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff;">private</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&#160;Long&#160;id;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff;">private</span></span><span style="font-size: 10pt;"><span style="color: #000000;">&#160;String&#160;name;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff;">private</span><span style="color: #000000;">&#160;Set&#160;categories&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span></span><span style="color: #000000;"><span style="font-size: 10pt;">&#160;HashSet();<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />...<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></span><span style="color: #000000;"><br />
<span style="font-size: 10pt;"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&#160;&#160;&#160;&#160;</span></span></div>
</div>
<p><span style="font-size: 10pt;">&#160;&#160;&#160;&#160;&#160; 映射文件中还可以不用set而用bag，只要把set出现的地方改成bag就行，这样相应的category.java和Item.java</span></p>
<p><span style="font-size: 10pt;">文件当中就可以用List。</span></p>
<img src ="http://www.blogjava.net/1504/aggbug/256083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2009-02-22 19:17 <a href="http://www.blogjava.net/1504/archive/2009/02/22/256083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts+hibernate+spring+dwr的一个小小的DEMO【收藏】</title><link>http://www.blogjava.net/1504/archive/2008/08/03/219702.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Sun, 03 Aug 2008 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/08/03/219702.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/219702.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/08/03/219702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/219702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/219702.html</trackback:ping><description><![CDATA[<p>最近无聊，做了一个<span class="hilite1">DWR</span>的验证和<font face="Arial">eXtremeTable的应用的例子</font></p>
<p>前期的系统创建、struts、hibernate、spring的集成工作就不用说了，一路下来&#8230;&#8230;&#8230;&#8230;</p>
<p>主要看<span class="hilite1">DWR</span>的应用，它用于表单验证：</p>
<p>1、先看它的配置：</p>
<p>（1）在web.xml里加上：</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt">&#160;&#160;<span class="tag">&lt;<span class="tag-name">servlet</span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">></span><span class="hilite1">dwr-invoker</span><span class="tag"><span class="tag-name">servlet-name</span><span class="tag">></span>&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">></span>uk.ltd.getahead.<span class="hilite1">dwr.<span class="hilite1">DWR</span>Servlet</span><span class="tag"><span class="tag-name">servlet-class</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">init-param</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param-name</span><span class="tag">></span>debug<span class="tag"><span class="tag-name">param-name</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param-value</span><span class="tag">></span>true<span class="tag"><span class="tag-name">param-value</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;<span class="tag"><span class="tag-name">init-param</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">load-on-startup</span><span class="tag">></span>1<span class="tag"><span class="tag-name">load-on-startup</span><span class="tag">></span>&#160; &#160;&#160; </span>
    </li>
    <li class="alt">&#160;<span class="tag"><span class="tag-name">servlet</span><span class="tag">></span>&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="">&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">></span><span class="hilite1">dwr-invoker</span><span class="tag"><span class="tag-name">servlet-name</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">></span>/<span class="hilite1">dwr/*</span><span class="tag"><span class="tag-name">url-pattern</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class=""><span class="tag"><span class="tag-name">servlet-mapping</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160; </li>
</ol>
</div>
<p>&#160;</p>
<p>（2）再建一个类，用于获取验证输出信息的属性文件，这个文件是参考了良葛格 的<strong><font color="#ff0000"><span class="hilite1">DWR</span> 入門與應用（一）</font></strong></p>
<p>里的Book代码</p>
<p>java 代码</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span class="keyword">package&#160;test.common; &#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt"><span class="keyword">import</span>&#160;java.util.ResourceBundle; &#160;&#160;
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt"><span class="keyword">public</span>&#160;<span class="keyword">class</span>&#160;GetProperties{ &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="keyword">private</span>&#160;ResourceBundle&#160;resource; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="keyword">public</span>&#160;GetProperties() &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;{ &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;resource&#160;=&#160;ResourceBundle.getBundle(<span class="string">"<span class="hilite1">dwr</span>Pro"</span>); &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;} &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="keyword">public</span>&#160;String&#160;getDescription(String&#160;key)&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;{ &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="keyword">return</span>&#160;resource.getString(key); &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;} &#160;&#160;
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt">}&#160;&#160; </li>
</ol>
</div>
<p>（3）编写属性文件<span class="hilite1">dwr</span>Pro_zh_CN.propertie（中文）和<span class="hilite1">dwr</span>_en.properties（英文）</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt">username_hasUsed&#160;=&#160;用户名已用，请选择别的用户名 &#160;&#160;
    </li>
    <li class="">username_canUse&#160;&#160;=&#160;恭喜！用户名可以使用 &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;
    </li>
    <li class="">username_hasUsed&#160;=username&#160;has&#160;used! &#160;&#160;
    </li>
    <li class="alt">username_canUse&#160;&#160;=&#160;username&#160;can&#160;use!&#160;&#160; </li>
</ol>
</div>
<p>&#160;</p>
<p>（4）配置<span class="hilite1">dwr</span>.xml，里面用了spring的bean 和java类</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span class="tag">&lt;<span class="tag-name"><span class="hilite1">dwr</span></span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">allow</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">create</span>&#160;<span class="attribute">creator</span>=<span class="attribute-value">"spring"</span>&#160;<span class="attribute">javascript</span>=<span class="attribute-value">"userManager"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"beanName"</span>&#160;<span class="attribute">value</span>=<span class="attribute-value">"userManager"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">include</span>&#160;<span class="attribute">method</span>=<span class="attribute-value">"findUserIsExist"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">create</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">create</span>&#160;<span class="attribute">creator</span>=<span class="attribute-value">"new"</span>&#160;<span class="attribute">javascript</span>=<span class="attribute-value">"User"</span>&#160;<span class="attribute">scope</span>=<span class="attribute-value">"application"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">param</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"class"</span>&#160;<span class="attribute">value</span>=<span class="attribute-value">"test.common.GetProperties"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">create</span><span class="tag">></span>&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;<span class="tag"><span class="tag-name">allow</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt"><span class="tag"><span class="tag-name"><span class="hilite1">dwr</span></span><span class="tag">></span>&#160;&#160; </span></li>
</ol>
</div>
<p>spring beanName&#160; 的value =&#8220;userManager&#8221;从applicationContext.xml里取得</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span class="tag">&lt;<span class="tag-name">bean</span>&#160;<span class="attribute">id</span>=<span class="attribute-value">"userManagerTarget"</span>&#160;<span class="attribute">class</span>=<span class="attribute-value">"test.spring.serviceImpl.UserServiceImpl"</span><span class="tag">></span>&#160;&#160;</span>
    </li>
    <li class=""><span class="tag">&lt;</span><span class="tag-name">property</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"userDao"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">ref</span>&#160;<span class="attribute">bean</span>=<span class="attribute-value">"userDao"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class=""><span class="tag"><span class="tag-name">property</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt"><span class="tag"><span class="tag-name">bean</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;<span class="tag">&lt;</span><span class="tag-name">bean</span>&#160;<span class="attribute">id</span>=<span class="attribute-value">"userManager"</span>&#160;<span class="attribute">class</span>=<span class="attribute-value">"org.springframework.aop.framework.ProxyFactoryBean"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">property</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"proxyInterfaces"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">></span>test.spring.service.IUserService<span class="tag"><span class="tag-name">value</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">property</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="">&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">property</span>&#160;<span class="attribute">name</span>=<span class="attribute-value">"interceptorNames"</span><span class="tag">></span>&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">></span>&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">idref</span>&#160;<span class="attribute">bean</span>=<span class="attribute-value">"transactionInterceptor"</span><span class="tag">/></span>&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag">&lt;</span><span class="tag-name">idref</span>&#160;<span class="attribute">bean</span>=<span class="attribute-value">"userManagerTarget"</span><span class="tag">/></span>&#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">list</span><span class="tag">></span>&#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;<span class="tag"><span class="tag-name">property</span><span class="tag">></span>&#160;&#160;&#160;&#160; &#160;&#160; </span>
    </li>
    <li class="">&#160;<span class="tag"><span class="tag-name">bean</span><span class="tag">></span>&#160;&#160;&#160; </span></li>
</ol>
</div>
<p>这里应该大家都懂，就不罗嗦了</p>
<p>&#160;</p>
<p>（5）配好了这些，就可以在页面里用了</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><!--page&#160;language=<span class="string">"java"&#160;pageEncoding=<span class="string">"UTF-8"</span><span-->&#160;&#160;</span></span>
    </li>
    <li class="">&#160;&#160;
    </li>
    <li class="alt">&#160;&#160;
    </li>
    <li class=""><!--ctype&#160;html&#160;public&#160;</sp--><span class="string">"-//W3C//DTD&#160;HTML&#160;4.01&#160;Transitional//EN"> &#160;&#160; </span>
    </li>
    <li class="alt">&#160;&#160;
    </li>
    <li class="">&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="alt">&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;
    </li>
    <li class="">&#160;&#160;&#160;&#160;
    <script&#160;type='text javascript?&#160; src="dwr/</span"><span class="keyword">interface/userManager.js'&gt; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;
    <script&#160;type='text javascript?&#160; src="dwr/engine.js"> &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;
    <script&#160;type='text javascript?&#160; src="dwr/</span"><span class="keyword">interface/GetProperties.js'&gt; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;
    <script&#160;type='text javascript?>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"0"&gt; &nbsp;&nbsp; </span>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <tr>
    </tr>
    &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    Login: &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    <span class="string">"text"&nbsp;name=<span class="string">"user.name"</span>&nbsp;id=<span class="string">"username"</span>&nbsp;onblur=<span class="string">"checkName()"</span>/&gt;<span class="string">"check_username"&gt; &nbsp;&nbsp;</span> </span>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <tr>
    </tr>
    &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    Password: &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <td>&nbsp;</td>
    <span class="string">"password"&nbsp;name=<span class="string">"user.password"</span>&nbsp;id=<span class="string">"username"</span>&nbsp;onblur=<span class="string">"checkpassword()"</span>/&gt;<span class="string">"check_password"&gt; &nbsp;&nbsp;</span> </span>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <tr>
    </tr>
    &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"2"&nbsp;align=<span class="string">"center"</span>&gt; &nbsp;&nbsp; </span>
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;
    <li class="">&nbsp;&nbsp; &nbsp;&nbsp;
    <li class="alt"></li>
</ol>
</div>
<p>&nbsp;</p>
<p>这里当填了Login框，当光标从输入框移开时就实行了</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span class="keyword">function&nbsp;checkName() &nbsp;&nbsp;</span>
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span>&nbsp;username&nbsp;=&nbsp;document.userForm.username.value; &nbsp;&nbsp;
    <li class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userManager.findUserIsExist(username,callback); &nbsp;&nbsp;
    <li class="alt">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font face="Arial">userManager.findUserIsExist(username,callback)时关键，这里就用了</font></p>
<p><font face="Arial">&nbsp;
<script src="dwr/interface/userManager.js" type="text/javascript"></script>
<p>&#160;</p>
<p>读取<span class="hilite1">dwr</span>.xml的<font face="Arial">userManager，然后读取applicationContext.xml里<font face="Arial">userManager&#160; bean ，进而实行<font face="Arial">findUserIsExist方法。</font></font></font></p>
<p>&#160;</p>
</span></li>
</ol>
</div>
<img src ="http://www.blogjava.net/1504/aggbug/219702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2008-08-03 15:31 <a href="http://www.blogjava.net/1504/archive/2008/08/03/219702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate3.0中实现模糊查询【转总结】 </title><link>http://www.blogjava.net/1504/archive/2008/06/20/209312.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Fri, 20 Jun 2008 00:43:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/06/20/209312.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/209312.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/06/20/209312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/209312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/209312.html</trackback:ping><description><![CDATA[今天的项目中在用<font style="background-color: #c7edcc" size="3">Hibernate3.0</font>进行模糊查询的时候，出现中文乱码，在网上查了好久资料，终于解决了，现在把整理后的贴出来。<br />
Hibernate中实现模糊查询，可有以下三种方式： <br />
<br />
第一种方式：QBC查询 <br />
String name = "", info = ""; <br />
if (sub != null &amp;&amp; sub.getSubname() != null) { <br />
name = sub.getSubname(); <br />
} <br />
if (sub != null &amp;&amp; sub.getSubinfo() != null) { <br />
info = sub.getSubinfo(); <br />
} <br />
Criteria cr = session.createCriteria(Subject.class); <br />
cr.add(Expression.like("subname","%"+name+"%")); <br />
cr.add(Expression.like("subinfo","%"+info+"%")); <br />
<br />
第二种方式：HQL查询语句 <br />
String hql = "from Subject as s where s.subname like :name and s.subinfo like :info"; <br />
// 调用session的获得数据列表方法，传递HQL查询语句 <br />
String&nbsp; subnamevalue="要查询的中文值";<br />
<font style="background-color: #c7edcc" size="3">String&nbsp;&nbsp; sql="";<br />
sql&nbsp;&nbsp; = "from Pfapp&nbsp; where name like :subname "; </font><br />
<font style="background-color: #c7edcc" size="3">Query query = session.createQuery(sql);&nbsp;<br />
query.setString("subname","%"+subnamevalue+"%");<br />
</font>System.out.println("*********"+sql); <br />
<br />
注：Subject为数据库表subject映射的类；它有相应的属性subname、subinfo及相应的get和set方法；sub为Subject的一个实例化对象。<br />
另外说明的是：如果你不写对象名称，直接写字段，那么hibernate就按照数据库字段进行查找 <br />
如果你写 &nbsp; (对象名.对象属性），那么hibernate就按照ormapping中的映射字段进行查找 <br />
这是hibernate的灵活之处！！ 
<img src ="http://www.blogjava.net/1504/aggbug/209312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2008-06-20 08:43 <a href="http://www.blogjava.net/1504/archive/2008/06/20/209312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate实现one-to-one级联保存[自己总结] </title><link>http://www.blogjava.net/1504/archive/2008/06/18/208942.html</link><dc:creator>O(∩_∩)O鱼阳~</dc:creator><author>O(∩_∩)O鱼阳~</author><pubDate>Wed, 18 Jun 2008 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/1504/archive/2008/06/18/208942.html</guid><wfw:comment>http://www.blogjava.net/1504/comments/208942.html</wfw:comment><comments>http://www.blogjava.net/1504/archive/2008/06/18/208942.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/1504/comments/commentRss/208942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/1504/services/trackbacks/208942.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">在具体的项目应用中,我们很少会用到一对一的级联操作,且很多时候一对一的操作可以通过多对一实现,但是一对一有自己的好处,就是在任何时候都能保证主外键数据的一致性,但是多对一的情况下未必能做到.<br />
我在项目中具体用到了一对一的级联操作,从网上拿了 一个例子来做,但是没有成功,于是只好自己研究,现在把修改后的代码帖出来.<br />
本例子使用<font size="3">hibernate3.jar</font>+oracle数据库<br />
库表:<br />
<font size="3">CARD_TEST</font>(<font size="3">CARDID[</font><font size="3">NUMBER(18)]</font>,<font size="3">CARDNUM[</font><font size="3">VARCHAR2(20)]</font>)<br />
<font size="3">USER_TEST</font>(<font size="3">USERID</font>[<font size="3">NUMBER(18)</font>],<font size="3">USERNAME</font>[<font size="3">VARCHAR2(20)</font>])<br />
<font size="3">TestMain.java</font><br />
</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">package com.gpdi.test;</span></span><font size="3"><br />
<span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">import org.hibernate.Session;<br />
import org.hibernate.Transaction;<br />
public class TestMain {<br />
/**<br />
&nbsp;* 存储一个用户<br />
&nbsp;* @param user<br />
&nbsp;*/<br />
public void save(User user){<br />
&nbsp;user.setUsername("TEST");<br />
&nbsp;Card card=new Card();<br />
&nbsp;//Card card1=new Card();<br />
&nbsp;card.setCardnum("HGJUYT");<br />
&nbsp;//card1.setCardnum("fghy55");<br />
&nbsp;user.setCard(card);<br />
&nbsp;//user.setCard(card1);<br />
&nbsp;Session session=HibernateSessionFactory.currentSession();<br />
&nbsp;&nbsp;&nbsp; card.setUser(user);<br />
&nbsp;&nbsp;&nbsp; //card1.setUser(user);<br />
&nbsp;Transaction tr=session.beginTransaction();<br />
&nbsp;session.save(user);<br />
&nbsp;//session.save(card);<br />
&nbsp;tr.commit();<br />
&nbsp;session.close();&nbsp;<br />
}</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;public static void main(String[] args) throws Exception {<br />
&nbsp;&nbsp;TestMain test=new TestMain();<br />
&nbsp;&nbsp;&nbsp;&nbsp; test.save(new User());<br />
&nbsp;}</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">}<br />
<font size="3">Card.java</font><br />
</span></span></font></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">package com.gpdi.test;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">/**<br />
&nbsp;* Card generated by MyEclipse - Hibernate Tools<br />
&nbsp;*/</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">public class Card&nbsp; implements java.io.Serializable {</span></span><font size="3"><br />
<span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; // Fields&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; private Integer cardid;<br />
&nbsp;&nbsp;&nbsp;&nbsp; private String cardnum;<br />
&nbsp;&nbsp;&nbsp;&nbsp; private User user;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; // Constructors</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; public User getUser() {<br />
&nbsp;&nbsp;return user;<br />
&nbsp;}<br />
&nbsp;public void setUser(User user) {<br />
&nbsp;&nbsp;this.user = user;<br />
&nbsp;}<br />
&nbsp;/** default constructor */<br />
&nbsp;&nbsp;&nbsp; public Card() {<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; /** full constructor */<br />
&nbsp;&nbsp;&nbsp; public Card(String cardnum) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.cardnum = cardnum;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; // Property accessors</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; public Integer getCardid() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.cardid;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public void setCardid(Integer cardid) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.cardid = cardid;<br />
&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; public String getCardnum() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.cardnum;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public void setCardnum(String cardnum) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.cardnum = cardnum;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
</span></span></font></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt"><font size="3">User.java</font><br />
package com.gpdi.test;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">import java.util.HashSet;<br />
import java.util.Set;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">/**<br />
&nbsp;* User generated by MyEclipse - Hibernate Tools<br />
&nbsp;*/</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">public class User&nbsp; implements java.io.Serializable {</span></span><font size="3"><br />
<span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; // Fields&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp; private Integer userid;<br />
&nbsp;&nbsp;&nbsp;&nbsp; private String username;<br />
&nbsp;&nbsp;&nbsp;&nbsp; private Card card;<br />
&nbsp;&nbsp;&nbsp;&nbsp; //private Set card = new HashSet();</span><br />
<span style="font-size: 10pt" twffan="done">&nbsp;&nbsp;&nbsp; // Constructors</span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt" twffan="done">&nbsp;&nbsp;&nbsp; public Card getCard() {<br />
&nbsp;&nbsp;return card;<br />
&nbsp;}</span><br />
</span><span style="font-size: 10pt"><span style="font-size: 10pt" twffan="done">&nbsp;public void setCard(Card card) {<br />
&nbsp;&nbsp;this.card = card;<br />
&nbsp;}</span><br />
</span><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;/** default constructor */<br />
&nbsp;&nbsp;&nbsp; public User() {<br />
&nbsp;&nbsp;&nbsp; }</span></span><span style="font-size: 10pt" twffan="done"><br />
<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /** full constructor */<br />
&nbsp;&nbsp;&nbsp; public User(String username) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.username = username;<br />
&nbsp;&nbsp;&nbsp; }</span></span><span style="font-size: 10pt" twffan="done"><br />
<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; // Property accessors</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; public Integer getUserid() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.userid;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public void setUserid(Integer userid) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.userid = userid;<br />
&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; public String getUsername() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.username;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public void setUsername(String username) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.username = username;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<font size="3">HibernateSessionFactory.java</font><br />
</span></span></font></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">package com.gpdi.test;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">import org.hibernate.HibernateException;<br />
import org.hibernate.Session;<br />
import org.hibernate.cfg.Configuration;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">/**<br />
&nbsp;* Configures and provides access to Hibernate sessions, tied to the<br />
&nbsp;* current thread of execution.&nbsp; Follows the Thread Local Session<br />
&nbsp;* pattern, see {@link http://hibernate.org/42.html}.<br />
&nbsp;*/<br />
public class HibernateSessionFactory {</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /** <br />
&nbsp;&nbsp;&nbsp;&nbsp; * Location of hibernate.cfg.xml file.<br />
&nbsp;&nbsp;&nbsp;&nbsp; * NOTICE: Location should be on the classpath as Hibernate uses<br />
&nbsp;&nbsp;&nbsp;&nbsp; * #resourceAsStream style lookup for its configuration file. That<br />
&nbsp;&nbsp;&nbsp;&nbsp; * is place the config file in a Java package - the default location<br />
&nbsp;&nbsp;&nbsp;&nbsp; * is the default Java package.&lt;br&gt;&lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; * Examples: &lt;br&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; * &lt;code&gt;CONFIG_FILE_LOCATION = "/hibernate.conf.xml". <br />
&nbsp;&nbsp;&nbsp;&nbsp; * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".&lt;/code&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /** Holds a single instance of Session */<br />
&nbsp;private static final ThreadLocal threadLocal = new ThreadLocal();</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /** The single instance of hibernate configuration */<br />
&nbsp;&nbsp;&nbsp; private static final Configuration cfg = new Configuration();</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /** The single instance of hibernate SessionFactory */<br />
&nbsp;&nbsp;&nbsp; private static org.hibernate.SessionFactory sessionFactory;</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * Returns the ThreadLocal Session instance.&nbsp; Lazy initialize<br />
&nbsp;&nbsp;&nbsp;&nbsp; * the &lt;code&gt;SessionFactory&lt;/code&gt; if needed.<br />
&nbsp;&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; @return Session<br />
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; @throws HibernateException<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public static Session currentSession() throws HibernateException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session = (Session) threadLocal.get();</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;if (session == null || !session.isOpen()) {<br />
&nbsp;&nbsp;&nbsp;if (sessionFactory == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cfg.configure(CONFIG_FILE_LOCATION);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sessionFactory = cfg.buildSessionFactory();<br />
&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.println("%%%% Error Creating SessionFactory %%%%");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;session = (sessionFactory != null) ? sessionFactory.openSession()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: null;<br />
&nbsp;&nbsp;&nbsp;threadLocal.set(session);<br />
&nbsp;&nbsp;}</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return session;<br />
&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; Close the single hibernate session instance.<br />
&nbsp;&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; @throws HibernateException<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public static void closeSession() throws HibernateException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session = (Session) threadLocal.get();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; threadLocal.set(null);</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (session != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * Default constructor.<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; private HibernateSessionFactory() {<br />
&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">}<br />
<font size="3">Card.hbm.xml</font><br />
</span></span></p>
<span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;<br />
&lt;!-- <br />
&nbsp;&nbsp;&nbsp; Mapping file autogenerated by MyEclipse - Hibernate Tools<br />
--&gt;<br />
&lt;hibernate-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;class name="com.gpdi.test.Card" table="CARD_TEST"&gt;<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id name="cardid" type="integer"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="CARDID" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;generator class="foreign" &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="property"&gt;user&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/generator&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="cardnum" type="string"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="CARDNUM" length="45" not-null="true" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreign-key="userid"指定外键关联的字段,必须,不可缺少 ,cascade="save-update"指定怎么操作级联,非必须<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;one-to-one name="user" foreign-key="userid" class="com.gpdi.test.User" cascade="save-update"&gt;&lt;/one-to-one&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br />
&lt;/hibernate-mapping&gt;<br />
<br />
<font size="3">User.hbm.xml</font><br />
</span></span><span style="font-size: 10pt" twffan="done"><span style="font-size: 10pt">&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;<br />
&lt;!-- <br />
&nbsp;&nbsp;&nbsp; Mapping file autogenerated by MyEclipse - Hibernate Tools<br />
--&gt;<br />
&lt;hibernate-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;class name="com.gpdi.test.User" table="USER_TEST"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id name="userid" type="integer"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="USERID" /&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" type="string"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="username" length="45" not-null="true" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;one-to-one name="card" foreign-key="cardid" class="com.gpdi.test.Card" cascade="save-update"&gt;&lt;/one-to-one&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set name="card" inverse="true" cascade="all"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;key column="cardid" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;one-to-many class="com.gpdi.test.Card" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/set&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;many-to-one&nbsp; name="card" class="com.gpdi.test.Card"&nbsp; insert="true" unique="true" lazy="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;column name="cardid"&nbsp; length="18"&nbsp; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/many-to-one&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br />
&lt;/hibernate-mapping&gt;<br />
<a title="Hibernate实现一对一实例源码" href="/Files/1504/one-to-one.rar">Hibernate实现一对一实例源码</a><br />
</span></span>
<img src ="http://www.blogjava.net/1504/aggbug/208942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/1504/" target="_blank">O(∩_∩)O鱼阳~</a> 2008-06-18 17:41 <a href="http://www.blogjava.net/1504/archive/2008/06/18/208942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>