﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-虎年打老虎-随笔分类-hibernate/jpa</title><link>http://www.blogjava.net/ywj-316/category/42558.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 28 May 2010 05:27:33 GMT</lastBuildDate><pubDate>Fri, 28 May 2010 05:27:33 GMT</pubDate><ttl>60</ttl><item><title>INFO XmlConfigurationProvider:380 - Unable to verify action class  exists at initialization</title><link>http://www.blogjava.net/ywj-316/archive/2010/05/27/322020.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Thu, 27 May 2010 05:49:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2010/05/27/322020.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/322020.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2010/05/27/322020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/322020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/322020.html</trackback:ping><description><![CDATA[13:35:42,129&nbsp; INFO EncryptLocalSessionFactoryBean:742 - Building new Hibernate SessionFactory<br />
13:35:42,145&nbsp; INFO XmlConfigurationProvider:380 - Unable to verify action class [faqAction] exists at initialization<br />
13:35:42,254&nbsp; INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\bull\BullInfo.hbm.xml<br />
13:35:42,442&nbsp; INFO HbmBinder:322 - Mapping class: com.c6.orm.model.bull.BullInfo -&gt; TB_BULL_INFO<br />
13:35:42,442&nbsp; INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\coin\CardInfo.hbm.xml<br />
13:35:42,457&nbsp; INFO HbmBinder:322 - Mapping class: com.c6.orm.model.coin.CardInfo -&gt; TB_CARD_INFO<br />
13:35:42,473&nbsp; INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\coin\Payment.hbm.xml<br />
13:35:42,489&nbsp; INFO HbmBinder:322 - Mapping class: com.c6.orm.model.coin.Payment -&gt; TB_PAYMENT<br />
13:35:42,489&nbsp; INFO Configuration:332 - Reading mappings from file: D:\opt\ASF\Tomcat6.0\webapps\cityunion\WEB-INF\classes\com\c6\orm\model\coin\TbBankExchangeLog.hbm.xml<br />
。。。。。。。。。。。。<br />
<br />
描述：提示信息Unable to verify action class&nbsp; exists at initialization<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不停的加载.hbm.xml文件，导致tomcat无法启动。<br />
被提示信息误导，在网上找了大量资料，都没有解决。原来由于自已不小心写错了配置文件<br />
&lt;property name="slaveSelfTotal" type="int" column="SLAVE_SELF_TOTAL"/&gt;<br />
&lt;property name="slaveSelfTotal" type="int" column="SLAVE_SELF_TOTAL"/&gt;<br />
写了两次。<br />
出现些问题大多是因为配置文件出错而引起的，仔细查看最近修改的置配文件就找到问题了
<img src ="http://www.blogjava.net/ywj-316/aggbug/322020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2010-05-27 13:49 <a href="http://www.blogjava.net/ywj-316/archive/2010/05/27/322020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由映射文件生成表</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300952.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300952.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300952.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300952.html</trackback:ping><description><![CDATA[<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.cfg.Configuration;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.hibernate.tool.hbm2ddl.SchemaExport;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_108_310_Open_Image" onclick="this.style.display='none'; Codehighlighter1_108_310_Open_Text.style.display='none'; Codehighlighter1_108_310_Closed_Image.style.display='inline'; Codehighlighter1_108_310_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_108_310_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_108_310_Closed_Text.style.display='none'; Codehighlighter1_108_310_Open_Image.style.display='inline'; Codehighlighter1_108_310_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Test&nbsp;</span><span id="Codehighlighter1_108_310_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_108_310_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_112_135_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_135_Open_Text.style.display='none'; Codehighlighter1_112_135_Closed_Image.style.display='inline'; Codehighlighter1_112_135_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_112_135_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_135_Closed_Text.style.display='none'; Codehighlighter1_112_135_Open_Image.style.display='inline'; Codehighlighter1_112_135_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_112_135_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_112_135_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_177_307_Open_Image" onclick="this.style.display='none'; Codehighlighter1_177_307_Open_Text.style.display='none'; Codehighlighter1_177_307_Closed_Image.style.display='inline'; Codehighlighter1_177_307_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_177_307_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_177_307_Closed_Text.style.display='none'; Codehighlighter1_177_307_Open_Image.style.display='inline'; Codehighlighter1_177_307_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_177_307_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_177_307_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;cfg</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Configuration().configure();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SchemaExport&nbsp;export</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SchemaExport(cfg);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;export.create(</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
   <img src ="http://www.blogjava.net/ywj-316/aggbug/300952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:57 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate.cfg.xml</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300950.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300950.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300950.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300950.html</trackback:ping><description><![CDATA[<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;hibernate-configuration&nbsp;PUBLIC&nbsp;"-//Hibernate/Hibernate&nbsp;Configuration&nbsp;DTD&nbsp;3.0//EN"&nbsp;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-configuration</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">session-factory</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="connection.driver_class"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.microsoft.sqlserver.jdbc.SQLServerDriver</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="connection.url"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:sqlserver://localhost:1433;DatabaseName=epai</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="connection.username"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">sa</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="connection.password"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">accp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="hibernate.dialect"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.hibernate.dialect.SQLServerDialect</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="hibernate.show_sql"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">true</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="hibernate.hbm2ddl.auto"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">update</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="hibernate.current_session_context_class"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">thread</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="hibernate.current_session_context_class"&gt;jta&lt;/property&gt;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mapping&nbsp;</span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="org/epai/entity/Users.hbm.xml"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mapping&nbsp;</span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="org/epai/entity/Goods.hbm.xml"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mapping&nbsp;</span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="org/epai/entity/Bid.hbm.xml"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">session-factory</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-configuration</span><span style="color: #0000ff">&gt;</span></div>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:56 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Restrictions</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300947.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300947.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300947.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300947.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300947.html</trackback:ping><description><![CDATA[&nbsp;
<table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: white 1pt solid; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: white 3pt solid" valign="top" width="18%">
            <p style="text-align: center" align="center"><strong><span style="font-size: 12pt; font-family: 宋体">HQL</span></strong><strong><span style="font-size: 12pt; font-family: 宋体">运算符</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: white 1pt solid; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 3pt solid" valign="top" width="39%">
            <p style="text-align: center" align="center"><strong><span style="font-size: 12pt; font-family: 宋体">QBC</span></strong><strong><span style="font-size: 12pt; font-family: 宋体">运算符</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: white 1pt solid; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 3pt solid" valign="top" width="41%">
            <p style="text-align: center" align="center"><strong><span style="font-size: 12pt; font-family: 宋体">含义</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">=</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.eq()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">等于equal</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">&lt;&gt;</span></strong><strong>&nbsp;</strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.ne()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">不等于not equal</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">&gt;</span></strong><strong>&nbsp;</strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.gt()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">大于greater than</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">&gt;=</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.ge()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">大于等于greater than or equal</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">&lt;</span></strong><strong>&nbsp;</strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.lt()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">小于less than</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">&lt;=</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.le()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">小于等于less than or equal</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">is null</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.isnull()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">等于空值</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">is not null</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.isNotNull()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">非空值</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">like</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.like()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">字符串模式匹配</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">and</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.and()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">逻辑与</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">and</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.conjunction()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">逻辑与</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">or</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.or()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">逻辑或</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">or</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.disjunction()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">逻辑或</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">not</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.not()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">逻辑非</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">in(</span></strong><strong><span style="font-size: 12pt; font-family: 宋体">列表)</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.in()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">等于列表中的某一个值</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">not in(</span></strong><strong><span style="font-size: 12pt; font-family: 宋体">列表)</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.not(Restrictions.in())</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">不等于列表中任意一个值</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: #ece9d8 1pt inset" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">between x and y</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.between()</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #cdddac; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">闭区间xy中的任意值</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: white 3pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #9bbb59; padding-bottom: 0cm; border-left: white 1pt solid; width: 18.38%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="18%">
            <p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: 宋体">not between x and y</span></strong></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 39.92%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="39%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Restrictions.not(Restrictions..between())</span></p>
            </td>
            <td style="border-right: white 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e6eed5; padding-bottom: 0cm; border-left: medium none; width: 41.7%; padding-top: 0cm; border-bottom: white 1pt solid" valign="top" width="41%">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">小于值X或者大于值y</span></p>
            </td>
        </tr>
    </tbody>
</table>
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">//</span><span style="color: #008000">获取记录总数</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">recordCount</span><span style="color: #000000">=</span><span style="color: #000000">Convert.ToInt32(criteria.SetProjection(&nbsp;Projections.Count(MovieUrl.__ID&nbsp;))&nbsp;.UniqueResult(&nbsp;&nbsp;));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />criteria.SetProjection(&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Criteria&nbsp;c</span><span style="color: #000000">=</span><span style="color: #000000">session.createCriteria(Book.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />c.add(Restrictions.like(</span><span style="color: #000000">"</span><span style="color: #000000">bookname</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,MatchMode.ANYWHERE));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />c.add(Restrictions.between(</span><span style="color: #000000">"</span><span style="color: #000000">bid</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_363_369_Open_Image" onclick="this.style.display='none'; Codehighlighter1_363_369_Open_Text.style.display='none'; Codehighlighter1_363_369_Closed_Image.style.display='inline'; Codehighlighter1_363_369_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_363_369_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_363_369_Closed_Text.style.display='none'; Codehighlighter1_363_369_Open_Image.style.display='inline'; Codehighlighter1_363_369_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />c.add(Restrictions.not(Restrictions.in(</span><span style="color: #000000">"</span><span style="color: #000000">bid</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Integer[]</span><span id="Codehighlighter1_363_369_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_363_369_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">4</span><span style="color: #000000">}</span></span><span style="color: #000000">)));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />c.setFirstResult(</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />c.setMaxResults(</span><span style="color: #000000">2</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />List&nbsp;list</span><span style="color: #000000">=</span><span style="color: #000000">c.list();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Restrictions.like(&#8220;&#8221;,&#8230;,MatchMode.ANYWHERE)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />AddOrder(Order.asc(&#8220;fwid&#8221;))<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
<span style="color: red; background-color: #00ff00">在oracle数据库中，如果使用<span style="font-size: 12pt; font-family: 宋体">Restrictions.ne("name","张三")，不会包括该字段值为空的记录</span></span>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:46 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DetachedCriteria</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300943.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300943.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300943.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300943.html</trackback:ping><description><![CDATA[<p>org.hibernate.criterion.DetachedCriteria的用法</p>
<p>一 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口，下面提供了 Criteria和DetachedCriteria 。 <br />
&nbsp;&nbsp; 1 Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样， Criteria 是在线的，所<br />
以它是由 Hibernate Session 进行创建的；而 DetachedCriteria 是离线的，创建时无需Session，DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name) <br />
进行DetachedCriteria 实例的创建。 Spring 的框架提供了getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结果。 <br />
&nbsp;&nbsp; 2 Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设<br />
置 FetchMode( 联合查询抓取的模式 ) ，设置排序方式。对于 Criteria 还可以设置 FlushModel <br />
（冲刷 Session 的方式）和 LockMode （数据库锁模式）。 <br />
二 下面对 Criterion 和 Projection 进行详细说明：<br />
&nbsp;&nbsp; 1 Criterion 是 Criteria 的查询条件。Criteria 提供了 add(Criterion criterion) 方法来<br />
添加查询条件。<br />
&nbsp;&nbsp; 2 Criterion 接口的主要实现包括： Example 、 Junction 和 SimpleExpression 。而 <br />
Junction 的实际使用是它的两个子类 conjunction 和 disjunction ，分别是使用 AND 和 OR 操<br />
作符进行来联结查询条件集合。<br />
&nbsp;&nbsp; 3 Criterion 的实例可以通过 Restrictions 工具类来创建，Restrictions 提供了大量的静态<br />
方法，如 eq （等于）、 ge （大于等于）、 between 等来方法的创建 Criterion 查询条件 <br />
（SimpleExpression 实例）。除此之外， Restrictions 还提供了方法来创建 conjunction 和 <br />
disjunction 实例，通过往该实例的 add(Criteria) 方法来增加查询条件形成一个查询条件集合。<br />
&nbsp;&nbsp; 4 至于 Example 的创建有所不同， Example 本身提供了一个静态方法 create(Object entity)，<br />
即根据一个对象（实际使用中一般是映射到数据库的对象）来创建。然后可以设置一些过滤条件： <br />
Example exampleUser =Example.create(u).ignoreCase() // 忽略大小写 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .enableLike(MatchMode.ANYWHERE); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 对 String 类型的属性，无论在那里值在那里都匹配。相当于 %value% <br />
&nbsp;&nbsp; 5 Project 主要是让 Criteria 能够进行报表查询，并可以实现分组。 Project 主要有 <br />
SimpleProjection 、 ProjectionList 和 Property 三个实现。其中 SimpleProjection 和 <br />
ProjectionList 的实例化是由内建的 Projections 来完成，如提供的 avg 、 count 、 max 、 <br />
min 、 sum 可以让开发者很容易对某个字段进行统计查询。 <br />
&nbsp;&nbsp; 6 Property 是对某个字段进行查询条件的设置，如通过Porperty.forName(&#8220;color&#8221;).in<br />
(new String[]{&#8220;black&#8221;,&#8221;red&#8221;,&#8221;write&#8221;}); 则可以创建一个 Project 实例。通过 <br />
criteria 的 add(Project) 方法加入到查询条件中去。 <br />
&nbsp;&nbsp; 使用 Criteria 进行查询，主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查<br />
询条件的创建和组装，下面介绍几种用法：<br />
&nbsp;&nbsp; 1. 创建一个Criteria 实例<br />
&nbsp;&nbsp; org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。<br />
&nbsp;&nbsp; Criteria crit = sess.createCriteria(Cat.class);<br />
&nbsp;&nbsp; crit.setMaxResults(50);<br />
&nbsp;&nbsp; List cats = crit.list();<br />
&nbsp; <br />
&nbsp;&nbsp; 2. 限制结果集内容<br />
&nbsp;&nbsp; 一个单独的查询条件是org.hibernate.criterion.Criterion 接口的一个实例。<br />
&nbsp;&nbsp; org.hibernate.criterion.Restrictions类 定义了获得某些内置Criterion类型的工厂方法。 </p>
<p>&nbsp;&nbsp; List cats = sess.createCriteria(Cat.class)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.like("name", "Fritz%") )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.between("weight", minWeight, maxWeight) )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;&nbsp; 约束可以按逻辑分组。 </p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.like("name", "Fritz%") )</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.or(</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Restrictions.eq( "age", new Integer(0) ),</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Restrictions.isNull("age")</p>
<p>&nbsp;&nbsp;&nbsp; ) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.disjunction()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.isNull("age") )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.eq("age", new Integer(0) ) )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.eq("age", new Integer(1) ) )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.eq("age", new Integer(2) ) )</p>
<p>&nbsp;&nbsp;&nbsp; ) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>Hibernate提供了相当多的内置criterion类型(Restrictions 子类), 但是尤其有用的是可以允许</p>
<p>你直接使用SQL。 </p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.sql("lower({alias}.name) like lower(?)", "Fritz%", </p>
<p>Hibernate.STRING) ) </p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>{alias}占位符应当被替换为被查询实体的列别名。 </p>
<p>Property实例是获得一个条件的另外一种途径。你可以通过调用Property.forName() 创建一个</p>
<p>Property。 </p>
<p>&nbsp; </p>
<p>&nbsp; Property age = Property.forName("age");</p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.disjunction()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( age.isNull() )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( age.eq( new Integer(0) ) )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( age.eq( new Integer(1) ) )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( age.eq( new Integer(2) ) )</p>
<p>&nbsp;&nbsp;&nbsp; ) )</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("name").in( new String[] { "Fritz", "Izi", "Pk" } ) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>3. 结果集排序</p>
<p>你可以使用org.hibernate.criterion.Order来为查询结果排序。 </p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.like("name", "F%")</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.asc("name") )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.desc("age") )</p>
<p>&nbsp;&nbsp;&nbsp; .setMaxResults(50)</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("name").like("F%") )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Property.forName("name").asc() )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Property.forName("age").desc() )</p>
<p>&nbsp;&nbsp;&nbsp; .setMaxResults(50)</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>4. 关联</p>
<p>你可以使用createCriteria()非常容易的在互相关联的实体间建立 约束。</p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.like("name", "F%")</p>
<p>&nbsp;&nbsp;&nbsp; .createCriteria("kittens")</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Restrictions.like("name", "F%")</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>注意第二个 createCriteria()返回一个新的 Criteria实例，该实例引用kittens 集合中的元素。 </p>
<p>接下来，替换形态在某些情况下也是很有用的。</p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .createAlias("kittens", "kt")</p>
<p>&nbsp;&nbsp;&nbsp; .createAlias("mate", "mt")</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.eqProperty("kt.name", "mt.name") )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>(createAlias()并不创建一个新的 Criteria实例。) </p>
<p>Cat实例所保存的之前两次查询所返回的kittens集合是 没有被条件预过滤的。如果你希望只获得</p>
<p>符合条件的kittens， 你必须使用returnMaps()。 </p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .createCriteria("kittens", "kt")</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.eq("name", "F%") )</p>
<p>&nbsp;&nbsp;&nbsp; .returnMaps()</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>Iterator iter = cats.iterator();</p>
<p>while ( iter.hasNext() ) {</p>
<p>&nbsp;&nbsp;&nbsp; Map map = (Map) iter.next();</p>
<p>&nbsp;&nbsp;&nbsp; Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);</p>
<p>&nbsp;&nbsp;&nbsp; Cat kitten = (Cat) map.get("kt");</p>
<p>}</p>
<p>5. 动态关联抓取 </p>
<p>你可以使用setFetchMode()在运行时定义动态关联抓取的语义。 </p>
<p>&nbsp; </p>
<p>List cats = sess.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.like("name", "Fritz%") )</p>
<p>&nbsp;&nbsp;&nbsp; .setFetchMode("mate", FetchMode.EAGER)</p>
<p>&nbsp;&nbsp;&nbsp; .setFetchMode("kittens", FetchMode.EAGER)</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>这个查询可以通过外连接抓取mate和kittens。</p>
<p>&nbsp; </p>
<p>6. 查询示例</p>
<p>org.hibernate.criterion.Example类允许你通过一个给定实例 构建一个条件查询。</p>
<p>&nbsp; </p>
<p>Cat cat = new Cat();</p>
<p>cat.setSex('F');</p>
<p>cat.setColor(Color.BLACK);</p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Example.create(cat) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。 </p>
<p>可以自行调整Example使之更实用。 </p>
<p>&nbsp; </p>
<p>Example example = Example.create(cat)</p>
<p>&nbsp;&nbsp;&nbsp; .excludeZeroes()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //exclude zero valued properties</p>
<p>&nbsp;&nbsp;&nbsp; .excludeProperty("color")&nbsp; //exclude the property named "color"</p>
<p>&nbsp;&nbsp;&nbsp; .ignoreCase()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //perform case insensitive string comparisons</p>
<p>&nbsp;&nbsp;&nbsp; .enableLike();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //use like for string comparisons</p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add(example)</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>甚至可以使用examples在关联对象上放置条件。</p>
<p>&nbsp; </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Example.create(cat) )</p>
<p>&nbsp;&nbsp;&nbsp; .createCriteria("mate")</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Example.create( cat.getMate() ) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>7. 投影(Projections)、聚合（aggregation）和分组（grouping）</p>
<p>org.hibernate.criterion.Projections是 Projection 的实例工厂。我们通过调用 </p>
<p>setProjection()应用投影到一个查询。 </p>
<p>&nbsp; </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.rowCount() )</p>
<p>&nbsp;&nbsp;&nbsp; .add( Restrictions.eq("color", Color.BLACK) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.projectionList()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.rowCount() )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.avg("weight") )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.max("weight") )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.groupProperty("color") )</p>
<p>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p> </p>
<p>在一个条件查询中没有必要显式的使用 "group by" 。某些投影类型就是被定义为 分组投影，他</p>
<p>们也出现在SQL的group by子句中。 </p>
<p>可以选择把一个别名指派给一个投影，这样可以使投影值被约束或排序所引用。下面是两种不同的</p>
<p>实现方式： </p>
<p>&nbsp; </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.asc("colr") )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p> </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.groupProperty("color").as("colr") )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.asc("colr") )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp; </p>
<p>alias()和as()方法简便的将一个投影实例包装到另外一个 别名的Projection实例中。简而言之，</p>
<p>当你添加一个投影到一个投影列表中时 你可以为它指定一个别名： </p>
<p>&nbsp; </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.projectionList()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.rowCount(), "catCountByColor" )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.avg("weight"), "avgWeight" )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.max("weight"), "maxWeight" )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.groupProperty("color"), "color" )</p>
<p>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.desc("catCountByColor") )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.desc("avgWeight") )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>List results = session.createCriteria(Domestic.class, "cat")</p>
<p>&nbsp;&nbsp;&nbsp; .createAlias("kittens", "kit")</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.projectionList()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.property("cat.name"), "catName" )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.property("kit.name"), "kitName" )</p>
<p>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.asc("catName") )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.asc("kitName") )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>也可以使用Property.forName()来表示投影：</p>
<p>&nbsp; </p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Property.forName("name") )</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("color").eq(Color.BLACK) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>List results = session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Projections.projectionList()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Projections.rowCount().as("catCountByColor") )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Property.forName("weight").avg().as("avgWeight") )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Property.forName("weight").max().as("maxWeight") )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add( Property.forName("color").group().as("color" )</p>
<p>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.desc("catCountByColor") )</p>
<p>&nbsp;&nbsp;&nbsp; .addOrder( Order.desc("avgWeight") )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>&nbsp;</p>
<p>8. 离线(detached)查询和子查询</p>
<p>&nbsp;&nbsp; 在web层，程序员使用DetachedCriteria来构造查询条件，然后将这个DetachedCriteria作为方法调用参数传递给业务层对象。而业务层对象获得DetachedCriteria之后，可以在session范围内直接构造Criteria，进行查询。就此，查询语句的构造完全被搬离到web层实现，而业务层则只负责完成持久化和查询的封装即可，与查询条件构造完全解耦，非常完美！这恐怕也是以前很多企图在web层代码中构造HQL语句的人想实现的梦想吧！</p>
<p>DetachedCriteria类使你在一个session范围之外创建一个查询，并且可以使用任意的 Session来</p>
<p>执行它。 </p>
<p>&nbsp; </p>
<p>DetachedCriteria query = DetachedCriteria.forClass(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("sex").eq('F') );</p>
<p>//创建一个Session</p>
<p>Session session = .;</p>
<p>Transaction txn = session.beginTransaction();</p>
<p>List results = query.getExecutableCriteria(session).setMaxResults(100).list();</p>
<p>txn.commit();</p>
<p>session.close();</p>
<p>&nbsp;</p>
<p>DetachedCriteria也可以用以表示子查询。条件实例包含子查询可以通过 Subqueries或者</p>
<p>Property获得。</p>
<p>&nbsp; </p>
<p>DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Property.forName("weight").avg() );</p>
<p>session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("weight).gt(avgWeight) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Property.forName("weight") );</p>
<p>session.createCriteria(Cat.class)</p>
<p>&nbsp;&nbsp;&nbsp; .add( Subqueries.geAll("weight", weights) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p>相互关联的子查询也是有可能的： </p>
<p>DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")</p>
<p>&nbsp;&nbsp;&nbsp; .setProjection( Property.forName("weight").avg() )</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("cat2.sex").eqProperty("cat.sex") );</p>
<p>session.createCriteria(Cat.class, "cat")</p>
<p>&nbsp;&nbsp;&nbsp; .add( Property.forName("weight).gt(avgWeightForSex) )</p>
<p>&nbsp;&nbsp;&nbsp; .list();</p>
<p><br />
例子<br />
public List findAllByCriter(final DetachedCriteria detachedCriteria){<br />
&nbsp;return (List)getHibernateTemplate().execute(new HibernateCallback(){<br />
&nbsp;&nbsp;public Object doInHibernate(Session session)<br />
&nbsp;&nbsp;&nbsp;throws HibernateException{<br />
&nbsp;&nbsp;&nbsp;Criteria criteria=detachedCriteria.getExecutableCriteria(session);<br />
&nbsp;&nbsp;&nbsp;return criteria.list();<br />
&nbsp;&nbsp;}<br />
&nbsp;});<br />
}</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/kjfcpua/archive/2009/06/21/4287248.aspx<br />
-----------------------------------------------------------------------------------------<br />
Hibernate一直都认为比较简单 就那么影射一下：）但最近项目当中遇见很多问题，今天看见别人在项目当中使用了　Hibernate3的DetachedCriteria，感觉真的是太好了，于是就花了点时间研究了一下，希望和大家分享一下吧<br />
　　针对这种需求，对于分层应用程序来说，Web层需要传递一个查询的条件列表给业务层对象，业务层对象获得这个条件列表之后，然后依次取出条件，构造查询语句。这里的一个难点是条件列表用什么来构造？传统上使用Map，但是这种方式缺陷很大，Map可以传递的信息非常有限，只能传递name和 value，无法传递究竟要做怎样的条件运算，究竟是大于，小于，like，还是其它的什么，业务层对象必须确切掌握每条entry的隐含条件。因此一旦隐含条件改变，业务层对象的查询构造算法必须相应修改，但是这种查询条件的改变是隐式约定的，而不是程序代码约束的，因此非常容易出错。</p>
<p>　　DetachedCriteria可以解决这个问题，即在web层，程序员使用DetachedCriteria来构造查询条件，然后将这个 DetachedCriteria作为方法调用参数传递给业务层对象。而业务层对象获得DetachedCriteria之后，可以在session范围内直接构造Criteria，进行查询。就此，查询语句的构造完全被搬离到web层实现，而业务层则只负责完成持久化和查询的封装即可，与查询条件构造完全解耦，非常完美！这恐怕也是以前很多企图在web层代码中构造HQL语句的人想实现的梦想吧！</p>
<p>　　示例代码片段如下：</p>
<p>　　web层程序构造查询条件：</p>
<p>　　Java代码:<br />
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);<br />
detachedCriteria.add(Restrictions.eq("name", "department")).createAlias("employees", "e").add(Restrictions.gt(("e.age"), new Integer(20)));</p>
<p>　　Department和Employee是一对多关联，查询条件为：</p>
<p>　　名称是&#8220;department&#8221;开发部门；<br />
　　部门里面的雇员年龄大于20岁；</p>
<p>　　业务层对象使用该条件执行查询：</p>
<p>　　java代码: detachedCriteria.getExecutableCriteria(session).list();<br />
　　最大的意义在于，业务层代码是固定不变的，所有查询条件的构造都在web层完成，业务层只负责在session内执行之。这样代码就可放之四海而皆准，都无须修改了。</p>
<p>　　然而Spring和Hibernate3的DetachedCriteria有不兼容的问题，因此在Spring环境下面使用Hibernate3需要注意：</p>
<p>　　Spring的HibernateTemplate提供了Hibernate的完美封装，即通过匿名类实现回调，来保证Session的自动资源管理和事务的管理。其中核心方法是：</p>
<p>　　java代码:<br />
HibernateTemplate.execute(new HibernateCallback() {<br />
　public Object doInHibernate(Session session) throws HibernateException {<br />
　　....<br />
　}<br />
}<br />
　　回调方法提供了session作为参数，有了session，就可以自由的使用Hibernate API编程了。使用了spring的之后，代码修改如下：</p>
<p>　　web层代码：</p>
<p>　　java代码:<br />
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);<br />
detachedCriteria.createAlias("employees", "e").add(Restrictions.eq("name", "department")).add(Restrictions.gt(("e.age"), new Integer(20)));<br />
departmentManager.findByCriteria(detachedCriteria);<br />
　　构造detachedCriteria，作为参数传递给departmentManager</p>
<p>　　业务层代码使用spring，DepartmentManager的findByCriteria如下：</p>
<p>　　java代码:</p>
<p>public List findByCriteria(final DetachedCriteria detachedCriteria) {<br />
　return (List) getHibernateTemplate().execute(new HibernateCallback() {<br />
　　public Object doInHibernate(Session session) throws HibernateException {<br />
　　　Criteria criteria = detachedCriteria.getExecutableCriteria(session);<br />
　　　return criteria.list();<br />
　　}<br />
　});<br />
}<br />
　　实际上也就是：</p>
<p>　　java代码:<br />
Criteria criteria = detachedCriteria.getExecutableCriteria(session);<br />
return criteria.list();<br />
　　而已</p>
<p>　　但是该程序代码执行，会抛出强制类型转换异常！</p>
<p>　　我跟踪了一下spring和Hibernate源代码，原因如下：</p>
<p>　　spring的HibernateTemplate的execute方法提供的回调接口具有Session作为参数，但是实际上，默认情况下， HibernateTemplate传递给回调接口的session并不是org.hibernate.impl.SessionImpl类，而是 SessionImpl类的一个Proxy类。之所以替换成为一个Proxy类，HibernateTemplate的注释说明，Proxy提供了一些额外的功能，包括自动设置Cachable，Transaction的超时时间，Session资源的更积极的关闭等等。</p>
<p>　　java代码:<br />
private boolean exposeNativeSession = false;<br />
...<br />
　　execute方法内部：<br />
Session sessionToExpose = (exposeNativeSession ? session : createSessionProxy(session));</p>
<p>　　但是遗憾的是，Hibernate的DetachedCriteria的setExecutableCriteria方法却要求将session参数强制转为SessionImpl，但是spring传过来的却是一个Proxy类，因此就报错了。</p>
<p>　　java代码:<br />
public Criteria getExecutableCriteria(Session session) {<br />
　impl.setSession( (SessionImpl) session ); // 要求SessionImpl，Spring传递的是Proxy<br />
　return impl;<br />
}</p>
<p>　　解决方法，禁止Spring的HibernateTemplate传递Proxy类，强制要求它传递真实的SessionImpl类，即给exexute方法增加一个参数，提供参数为true，如下：</p>
<p>　　java代码:<br />
public List findByCriteria(final DetachedCriteria detachedCriteria) {<br />
　return (List) getHibernateTemplate().execute(new HibernateCallback() {<br />
　　public Object doInHibernate(Session session) throws HibernateException {<br />
　　　Criteria criteria = detachedCriteria.getExecutableCriteria(session);<br />
　　　return criteria.list();<br />
　　}<br />
　}, true);<br />
}</p>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:41 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-HibernateTemplate</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300938.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300938.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300938.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300938.html</trackback:ping><description><![CDATA[<p>1 ，void delete ( Object entity ) : 删除指定持久化实例<br />
public void removePerson( int personid)<br />
{<br />
//先加载特定的实例<br />
Object p = getHibernateTemplate().load( Person.class , new Integer( personid));<br />
//删除特定实例<br />
getHibernateTemplate().delete (p);<br />
}<br />
2 ，deleteAll ( Collection entities ) : 删除集合内全部持久化类实例</p>
<p>3 ，find ( String queryString ) : 根据HQL查询字符串来返回实例集合<br />
Public List getPersons()<br />
{<br />
//返回Person的全部实例<br />
return getHibernateTemplate().find ( " from Person " );<br />
}</p>
<p>4 ，findByNamedQuery ( String queryName) : 根据命名查询返回实例集合</p>
<p>5 ，get ( Class entityClass , Serializable id ) : 根据主键加载特定持久化类的实例<br />
public Person getPerson()<br />
{&nbsp;&nbsp; <br />
//返回特定主键对应的Person实例<br />
return (Person)getHibernateTemplate().get (Person.class , new Integer(person id));<br />
}<br />
6 ，save ( Object entity ) : 保存新的实例</p>
<p>7 ，saveOrUpdate ( Object entity ): 根据实例状态，选择保存或者更新</p>
<p>8 ，update ( Object entity ) : 更新实例的状态，要求entity是持久状态</p>
<p>9 ，setMaxResults ( int maxResults ) : 设置分页的大小。</p>
<br />
<br />
<br />
HibernateTemplate的 更灵活 的用法 ：<br />
更灵活的访问是通过以下两个方法完成的:<br />
Object execute ( HibernateCallback action ) ;<br />
List execute ( HibernateCallback action );<br />
这两个方法都需要一个HibernateCallback的实例，可以在任何有效的hibernate数据访问中使用。用法灵活，解决了Spring封装Hibernate后灵活性不足的缺陷。 HibernateCallback 是一个接，该接口只有一个方doInHibernate ( org.hibernate.Session session ), 该方法只有一个参数Session.
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PersonDaolmpl&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;PersonDao<br />
<img id="Codehighlighter1_48_799_Open_Image" onclick="this.style.display='none'; Codehighlighter1_48_799_Open_Text.style.display='none'; Codehighlighter1_48_799_Closed_Image.style.display='inline'; Codehighlighter1_48_799_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_48_799_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_48_799_Closed_Text.style.display='none'; Codehighlighter1_48_799_Open_Image.style.display='inline'; Codehighlighter1_48_799_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_48_799_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_48_799_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;私有实例变量保存SessionFactory</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;SessionFactory&nbsp;sessionFactory;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;依赖注入必需的setter&nbsp;方法</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setSessionFactory(SessionFactory&nbsp;sessionFactory)<br />
<img id="Codehighlighter1_196_236_Open_Image" onclick="this.style.display='none'; Codehighlighter1_196_236_Open_Text.style.display='none'; Codehighlighter1_196_236_Closed_Image.style.display='inline'; Codehighlighter1_196_236_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_196_236_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_196_236_Closed_Text.style.display='none'; Codehighlighter1_196_236_Open_Image.style.display='inline'; Codehighlighter1_196_236_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_196_236_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_196_236_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">this</span><span style="color: #000000">.sessionFactory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sessionFactory;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_238_315_Open_Image" onclick="this.style.display='none'; Codehighlighter1_238_315_Open_Text.style.display='none'; Codehighlighter1_238_315_Closed_Image.style.display='inline'; Codehighlighter1_238_315_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_238_315_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_238_315_Closed_Text.style.display='none'; Codehighlighter1_238_315_Open_Image.style.display='inline'; Codehighlighter1_238_315_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_238_315_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_238_315_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />*通过人名查找所有匹配该名的Person&nbsp;实例<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;name&nbsp;匹配的人名<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000">&nbsp;匹配该任命的全部Person&nbsp;集合<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List&nbsp;findPersonsByName(</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String&nbsp;name)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">创建HibernateTemplate实例</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">HibernateTemplate&nbsp;hibernateTemplate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateTemplate(</span><span style="color: #0000ff">this</span><span style="color: #000000">.sessionFactory);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">返回HibernateTemplate的execute&nbsp;的结果</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(List)&nbsp;hibernateTemplate.execute&nbsp;(<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">创建匿名内部类</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateCallback&nbsp;()<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;doInHibernate&nbsp;(Session&nbsp;session)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Hibernate&nbsp;Exception<br />
<img id="Codehighlighter1_656_793_Open_Image" onclick="this.style.display='none'; Codehighlighter1_656_793_Open_Text.style.display='none'; Codehighlighter1_656_793_Closed_Image.style.display='inline'; Codehighlighter1_656_793_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_656_793_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_656_793_Closed_Text.style.display='none'; Codehighlighter1_656_793_Open_Image.style.display='inline'; Codehighlighter1_656_793_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_656_793_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_656_793_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">使用条件查询的方法返回</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">List&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session.createCriteria(Person.</span><span style="color: #0000ff">class</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />.add(Restrictions.like(</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;name</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;%</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;.list&nbsp;(&nbsp;)&nbsp;;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;result;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;)&nbsp;:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />}</span></div>
<br />
<span style="background-color: yellow">注意：</span>在方法doInHibernate内可以访问到Session，该session是完全绑定到当前线程的Session实例，保证在对于复杂的持久层访问时，依然可以使用Hibernate的访问方式。
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:20 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-HQL</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300936.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300936.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300936.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300936.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在hql中关键字不区分大小写，但是属性和类名区分大不写简单属性查询[重要]1&nbsp; 单一属性查询，返回结果集属性列表,元素类型和实体类中相应的属性类型一致&nbsp;List&nbsp;students=session.createQuery("select&nbsp;name&nbsp;from&nbsp;Student").list();&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/ywj-316/archive/2009/11/03/300936.html'>阅读全文</a><img src ="http://www.blogjava.net/ywj-316/aggbug/300936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:14 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hiberante基出-缓存</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300934.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300934.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300934.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300934.html</trackback:ping><description><![CDATA[<span style="background-color: yellow">一级缓存<br />
</span><br />
&nbsp; * 一级缓存是缓存实体对象的<br />
&nbsp; * 如果管理一级缓存<br />
&nbsp;&nbsp;&nbsp; 一级缓存无法取消，但可以管理clear(),evict()<br />
&nbsp; * 一级缓存和session的生命周期一致，一级缓存也叫session级的缓存或事务级缓存<br />
&nbsp; * 如何避免一次性大量的实体数据入库导至内存溢出<br />
&nbsp;&nbsp;&nbsp; 先flush,再clear<br />
&nbsp; * 如何管理一级缓存<br />
&nbsp;&nbsp;&nbsp; load,get,iterate,save都支持一级缓存<br />
如果数据量特别大，考虑采用jdbc实现，如查jdbc也不能满足要求可以考虑采用数据本身的特定导入工具
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Student&nbsp;student</span><span style="color: #000000">=</span><span style="color: #000000">(Student)session.load(Student.</span><span style="color: #0000ff">class</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">studnet.name=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">student.getName());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">不会发出sql，因为load使用缓存</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">Student&nbsp;student</span><span style="color: #000000">=</span><span style="color: #000000">(Student)session.load(Student.</span><span style="color: #0000ff">class</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">studnet.name=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">student.getName());</span></div>
<br />
<span style="background-color: yellow">二级缓存<br />
</span><br />
&nbsp; * 二级缓存是缓存实体对象的，普通属性不会缓存<br />
&nbsp; * 二级缓存是进程级的缓存,也称为SessionFactory级的缓存,可以被所有的session共享<br />
&nbsp;&nbsp;&nbsp; 二级缓存的生命周期和SessionFactory是一致的，可以用SessionFactory管理二级缓存<br />
&nbsp; * 二级缓存的配置和使用<br />
&nbsp;&nbsp;&nbsp; 1 加入ehcache的jar包;<br />
&nbsp;&nbsp;&nbsp; 2 拷贝ehcache.xml文件到src目录下;<br />
&nbsp;&nbsp;&nbsp; 3 开启二级缓存，默认是打开的。配置hibernate.cfg.xml<br />
&nbsp;&nbsp;&nbsp; hibernate.cfg.xml文件<br />
&nbsp;&nbsp;&nbsp; 开启二级缓存
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="hibernate.cache.use_second_level_cache"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">true</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp; 指定缓存产品提供商<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="hibernate.cache.provider_class"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.hibernate.cache.EhCacheProvider</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp; 4 指定那些对象使用二级缓存(两种方运河)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: yellow">* 在映射文件中采用&lt;cache&gt;标签<br />
</span>&nbsp;
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="com.my.hibernate.User"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_user"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">cache&nbsp;</span><span style="color: #ff0000">usage</span><span style="color: #0000ff">="read-only"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">many-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="group"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="groupid"</span><span style="color: #ff0000">&nbsp;cascade</span><span style="color: #0000ff">="save-update"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp; <span style="background-color: yellow">* 在hibernate.cfg.xml文件中，采用&lt;class-cache/&gt;标签</span><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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">class-cache&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.bjsxt.hibernate.Studnet"</span><span style="color: #ff0000">&nbsp;usage</span><span style="color: #0000ff">="read-only"</span><span style="color: #0000ff">/&gt;</span></div>
<br />
<p><span style="background-color: yellow">管理二级缓存<br />
</span></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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">factory.evict(Student.class);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />factory.evict(Student.class,1);</span></div>
<p>一级缓存和二级缓存的交互问题<br />
&nbsp;&nbsp; 1 不设置(默认)会写入二级缓存，也会读出<br />
&nbsp;&nbsp; 2 GET只读而不写入二级缓存</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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;session.setCacheMode(CacheMode.GET);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;Student&nbsp;student</span><span style="color: #000000">=</span><span style="color: #000000">(Student)session.load(Student.</span><span style="color: #0000ff">class</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);</span></div>
<p>&nbsp;&nbsp; 3 PUT只写入二级缓存页不读取</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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;session.setCacheMode(CacheMode.PUT);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;Student&nbsp;student</span><span style="color: #000000">=</span><span style="color: #000000">(Student)session.load(Student.</span><span style="color: #0000ff">class</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">);</span></div>
<p><br />
<span style="background-color: yellow">查询缓存</span></p>
<p>查询缓存是针对普通属性结果集的缓存<br />
对实体对象的结果只缓存id</p>
<p>查询缓存的生命周期，当前关联的表发生修改，那么查询缓存生命周期结束</p>
<p>查询缓存的配置和使用<br />
1 起用查询缓存<br />
&nbsp; * 配置hibernate.cfg.xml文件</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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="hibernate.cache.use_second_level_cache"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">true</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span></div>
<p>&nbsp; * 在程序中显式起用</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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">query.setCacheable(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</span></div>
<p>2 Session和查询缓存生命周期没有关系<br />
3 查询缓存对query.iterate()不起作用，只用对query.list()起作用<br />
</p>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:49 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-悲观[乐观]锁</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300931.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300931.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300931.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300931.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300931.html</trackback:ping><description><![CDATA[<p>悲观锁</p>
<p>悲观锁的实现，通常依赖于数据库机制，在整个过程中将数据锁定，其它任何用户都不能读取或修改<br />
session.load(Inventory.class, 1, LockMode.UPGRADE);</p>
<p>乐观锁</p>
<p>大多数基于数据版本记录机制(version)实现，一般是在数据库表中加入一个version字段<br />
读取数据时将版本号一同读出，之后更新数据时版本号加一，如果提交数据时片本号小于<br />
或等于数据库表中的版本号，则认为数据是过期的，否则给予更新。<br />
</p>
1 Inventory.java:<br />
&nbsp;
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;count;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;version;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">version版本号由数据库维护，我们不用管</span></div>
2 Inventory.hbm.xml
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Inventory"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_inventory2"</span><span style="color: #ff0000">&nbsp;optimistic-lock</span><span style="color: #0000ff">="version"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="count"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="version"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span></div>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:40 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-Session_Flush</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300930.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300930.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300930.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300930.html</trackback:ping><description><![CDATA[<p>session flush测试：</p>
<p>session flush方法主要做了两件事：<br />
1 清理缓存<br />
2 执行sql(不是提交事务)</p>
<p>session在什么情况下执行flush<br />
1 默认在事务提交时<br />
2 显式的调用flush<br />
3 在执行查询前，如：iterate</p>
<p>hibernate按照save(insert),update,delete顺序提交相关的操作<br />
------------------------------------------------------------------------</p>
<p>&nbsp;&nbsp;&lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="uuid"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;因为id的主键生成策略采用的是uuid,所以调用完save后，只是将user对象纳入到session的管理<br />
&nbsp;&nbsp;不会发出insert语句，但是id已经生成，session中existsInDatebase状态为false<br />
&nbsp;&nbsp;session.save(user);<br />
&nbsp;&nbsp;调用flush,hibernate会清理缓存，执行sql<br />
&nbsp;&nbsp;如果数据库的隔离级别为提交读，那么我们可以看到flush过的数据<br />
&nbsp;&nbsp;并且session中existsInDatebase状态变为true<br />
&nbsp;&nbsp;session.flush();<br />
&nbsp;&nbsp;默认情况下commit操作会先执行者flush清理缓存，所以不用显式的调用flush<br />
&nbsp;&nbsp;commit后数据无法回滚<br />
&nbsp;&nbsp;session.getTransaction().commit();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="native"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;如果id的主键生成策略采用的是native,调用save(user)时会发出insert语句，返回由数据库生成的id,<br />
&nbsp;&nbsp;user对象纳入到session的管理,session中existsInDatebase状态为true<br />
-----------------------------------------------------------------<br />
&nbsp;&nbsp;&lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="uuid"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;session.save(user);<br />
&nbsp;&nbsp;将user对象从session中逐出,即session的EntiryEntries属性中逐出<br />
&nbsp;&nbsp;session.evict(user);//清理缓存<br />
&nbsp;&nbsp;无法成功提交，因为hibernate在清理缓存时，在session的insertions集合中取出user对象进行insert操作后<br />
&nbsp;&nbsp;需要更新entityEntries属性中的existsnDatabase为true,而我们采用evict已经将user从session中<br />
&nbsp;&nbsp;逐出了,所以找不到相关数据,无法更新,抛出异常<br />
&nbsp;&nbsp;session.getTransaction().commit();<br />
----------------------------------------------------------------<br />
&nbsp;&nbsp;&lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="uuid"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;session.save(user);<br />
&nbsp;&nbsp;flush后hibernate会清理缓存,会将user对象保存到数据库中,将session中的insertions中的user<br />
&nbsp;&nbsp;清除,并且设置session中existsInDatabase的状态为true<br />
&nbsp;&nbsp;session.flush(user);<br />
&nbsp;&nbsp;将user对象从session中逐出,即session的EntityEntries属性中逐出<br />
&nbsp;&nbsp;session.evict(user);//清理缓存<br />
&nbsp;&nbsp;可以成功提交，因为hibernate在清理缓存时，在session的insertions集合中无法找到user对象<br />
&nbsp;&nbsp;所以就不会发出insert语句,也不会更新session中的existsInDatabase的状态<br />
&nbsp;&nbsp;session.getTransaction().commit();<br />
-----------------------------------------------------------------<br />
&nbsp;&nbsp;&lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="native"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;session.save(user);<br />
&nbsp;&nbsp;将user对象从session中逐出,即session的EntityEntries属性中逐出<br />
&nbsp;&nbsp;session.evict(user);//清理缓存<br />
&nbsp;&nbsp;可以成功提交，因为hibernate在清理缓存时，在session的insertions集合中无法找到user对象<br />
&nbsp;&nbsp;所以就不会发出insert语句,也不会更新session中的existsInDatabase的状态<br />
&nbsp;&nbsp;session.getTransaction().commit();<br />
-----------------------------------------------------------------<br />
&nbsp;&nbsp;&nbsp; &lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="assigned"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;session.save(user);<br />
&nbsp;&nbsp;user.setName("张三");<br />
&nbsp;&nbsp;session.update(user);<br />
&nbsp;&nbsp;User user2=new User();<br />
&nbsp;&nbsp;user2.setId("003");<br />
&nbsp;&nbsp;user2.setName("李四");<br />
&nbsp;&nbsp;session.getTransaction().commit();<br />
&nbsp;&nbsp;结果:<br />
&nbsp;&nbsp;insert into ...<br />
&nbsp;&nbsp;insert into ...<br />
&nbsp;&nbsp;update t_user ...<br />
&nbsp;&nbsp;hibernate按照save(insert),update,delete顺序提交相关的操作<br />
-----------------------------------------------------------------<br />
&nbsp;&nbsp; &lt;id name="id"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="assigned"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;<br />
&nbsp;&nbsp;session.save(user);<br />
&nbsp;&nbsp;user.setName("张三");<br />
&nbsp;&nbsp;session.update(user);<br />
&nbsp;&nbsp;因为我们在session.update(user)后执行了flush,所以在以commit清理缓存时执行flush前的sql就不会发出.<br />
&nbsp;&nbsp;session.flush();//在这里flush操作就可以了<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;User user2=new User();<br />
&nbsp;&nbsp;user2.setId("003");<br />
&nbsp;&nbsp;user2.setName("李四");<br />
&nbsp;&nbsp;session.getTransaction().commit();<br />
&nbsp;&nbsp;结果:<br />
&nbsp;&nbsp;insert into ...<br />
&nbsp;&nbsp;update t_user ...<br />
&nbsp;&nbsp;insert into ...<br />
&nbsp;&nbsp;按照我们想要顺序save(insert),update,save(insert)的顺序提交操作<br />
-----------------------------------------------------------------</p>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:37 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-fetch抓取</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300929.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300929.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300929.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300929.html</trackback:ping><description><![CDATA[<p>抓取策略(单端代理的批量抓取)<br />
1 保持默认,也就是fetch="select"<br />
&nbsp; &lt;many-to-one name="classes" column="classesid" cascade="save-update"/&gt;<br />
&nbsp; fetch="select",另外发送一条select语句抓取当前对象关联实体或集合<br />
2 设置fetch="jion"<br />
&nbsp; &lt;many-to-one name="classes" column="classesid" cascade="save-update" fetch="join"/&gt;<br />
&nbsp; fetch="jion",hibernate会通过select语句会使用外联接来加载其关联实体或集合,此时lazy会失效<br />
------------------------------------------------------------<br />
抓取策略(集合代理的批量抓取)<br />
1 保持默认,也就是fetch="select"<br />
&nbsp; &lt;set name="students" fetch="select"&gt;<br />
&nbsp; fetch="select",另外发送一条select语句抓取当前对象关联实体或集合<br />
2 设置fetch="jion"<br />
&nbsp; &lt;set name="students" fetch="jion"&gt;<br />
&nbsp; fetch="jion",hibernate会通过select语句会使用外联接来加载其关联实体或集合,此时lazy会失效<br />
3 设置fetch="subselect"<br />
&nbsp; &lt;set name="students" fetch="subselect"&gt;<br />
&nbsp; fetch="subselect",用于createQuery()查询,另外发送一条select语句抓取在前面查询到的所有实体对象的关联集合<br />
----------------------------------------------------------------<br />
抓取策略,batch-size在&lt;class&gt;上的应用</p>
<p>batch-size属性,可能批量加载体类,参见:Classes.hbm.xml<br />
&lt;class name="Classes" table="t_classes" batch-size="3"&gt;</p>
<p>在hibernate.cfg.xml中设置<br />
&lt;property name="hibernate.jdbc.fetch_size"&gt;50&lt;/property&gt;</p>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:34 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-lazy策略</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300928.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300928.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300928.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300928.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: lazy策略可以使用在：&nbsp;&nbsp; * &lt;class&gt;标签上，可以取值：true/false&nbsp;&nbsp; * &lt;property&gt;标签上，可以取值：true/false需要类增强工具&nbsp;&nbsp; * &lt;set&gt;&lt;list&gt;标签上，可以取值：true/false/extra&nbsp;&nbsp; ...&nbsp;&nbsp;<a href='http://www.blogjava.net/ywj-316/archive/2009/11/03/300928.html'>阅读全文</a><img src ="http://www.blogjava.net/ywj-316/aggbug/300928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:33 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-Component+[联合]映象</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300921.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300921.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300921.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300921.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300921.html</trackback:ping><description><![CDATA[<p><span style="background-color: yellow">Component映射(值对象映射)</span></p>
<p>在hibernate中,component是某个实体的逻辑组成部分，它与实体的根本区别是没有oid，<br />
component可以称为是值对象（DDD）</p>
<p>采用component映射的好处：它实现了对象模型的细粒度划分，层次会更分明，复用率会更高<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">&lt;!--</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;User：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comtact：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;private&nbsp;int&nbsp;id;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;email;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;name;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;address;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Comtact&nbsp;comtact;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;phone;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="User"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_user"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">component&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="comtact"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">="email"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">="address"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">="phone"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">component</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span></div>
<br />
<p><span style="background-color: yellow">复合（联合）主键映射</span></p>
<p>通常将复合主键相关的属性，单独放到一个类中<br />
&nbsp;* 此类必须实现序列化接口<br />
&nbsp;* 覆写hashcode和equals方法</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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="com.bjsxt.hibernate.FiscalYearPeriod"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_fiscal_year_period"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">composite-id&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="fiscalYearPeriodPK"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key-property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="fiscalYear"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key-property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="fiscalPeriod"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">composite-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="beginDate"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="endDate"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="periodSts"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span></div>
<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"><img id="Codehighlighter1_56_951_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_951_Open_Text.style.display='none'; Codehighlighter1_56_951_Closed_Image.style.display='inline'; Codehighlighter1_56_951_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_56_951_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_56_951_Closed_Text.style.display='none'; Codehighlighter1_56_951_Open_Image.style.display='inline'; Codehighlighter1_56_951_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;FiscalYearPeriodPK&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Serializable&nbsp;</span><span id="Codehighlighter1_56_951_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_56_951_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">核算年</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;fiscalYear;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">核算月</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;fiscalPeriod;<br />
<img id="Codehighlighter1_152_176_Open_Image" onclick="this.style.display='none'; Codehighlighter1_152_176_Open_Text.style.display='none'; Codehighlighter1_152_176_Closed_Image.style.display='inline'; Codehighlighter1_152_176_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_152_176_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_152_176_Closed_Text.style.display='none'; Codehighlighter1_152_176_Open_Image.style.display='inline'; Codehighlighter1_152_176_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getFiscalYear()&nbsp;</span><span id="Codehighlighter1_152_176_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_152_176_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;fiscalYear;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_221_256_Open_Image" onclick="this.style.display='none'; Codehighlighter1_221_256_Open_Text.style.display='none'; Codehighlighter1_221_256_Closed_Image.style.display='inline'; Codehighlighter1_221_256_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_221_256_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_221_256_Closed_Text.style.display='none'; Codehighlighter1_221_256_Open_Image.style.display='inline'; Codehighlighter1_221_256_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&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;setFiscalYear(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;fiscalYear)&nbsp;</span><span id="Codehighlighter1_221_256_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_221_256_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.fiscalYear&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fiscalYear;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_288_314_Open_Image" onclick="this.style.display='none'; Codehighlighter1_288_314_Open_Text.style.display='none'; Codehighlighter1_288_314_Closed_Image.style.display='inline'; Codehighlighter1_288_314_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_288_314_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_288_314_Closed_Text.style.display='none'; Codehighlighter1_288_314_Open_Image.style.display='inline'; Codehighlighter1_288_314_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getFiscalPeriod()&nbsp;</span><span id="Codehighlighter1_288_314_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_288_314_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;fiscalPeriod;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_363_402_Open_Image" onclick="this.style.display='none'; Codehighlighter1_363_402_Open_Text.style.display='none'; Codehighlighter1_363_402_Closed_Image.style.display='inline'; Codehighlighter1_363_402_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_363_402_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_363_402_Closed_Text.style.display='none'; Codehighlighter1_363_402_Open_Image.style.display='inline'; Codehighlighter1_363_402_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&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;setFiscalPeriod(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;fiscalPeriod)&nbsp;</span><span id="Codehighlighter1_363_402_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_363_402_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.fiscalPeriod&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fiscalPeriod;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
<img id="Codehighlighter1_439_583_Open_Image" onclick="this.style.display='none'; Codehighlighter1_439_583_Open_Text.style.display='none'; Codehighlighter1_439_583_Closed_Image.style.display='inline'; Codehighlighter1_439_583_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_439_583_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_439_583_Closed_Text.style.display='none'; Codehighlighter1_439_583_Open_Image.style.display='inline'; Codehighlighter1_439_583_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;hashCode()&nbsp;</span><span id="Codehighlighter1_439_583_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_439_583_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;prime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">31</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prime&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;fiscalPeriod;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prime&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;fiscalYear;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;result;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
<img id="Codehighlighter1_632_949_Open_Image" onclick="this.style.display='none'; Codehighlighter1_632_949_Open_Text.style.display='none'; Codehighlighter1_632_949_Closed_Image.style.display='inline'; Codehighlighter1_632_949_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_632_949_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_632_949_Closed_Text.style.display='none'; Codehighlighter1_632_949_Open_Image.style.display='inline'; Codehighlighter1_632_949_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;equals(Object&nbsp;obj)&nbsp;</span><span id="Codehighlighter1_632_949_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_632_949_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;obj)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">true</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(obj&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">false</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getClass()&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;obj.getClass())<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">false</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;FiscalYearPeriodPK&nbsp;other&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(FiscalYearPeriodPK)&nbsp;obj;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(fiscalPeriod&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;other.fiscalPeriod)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">false</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(fiscalYear&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;other.fiscalYear)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">false</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">true</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_984_1131_Open_Image" onclick="this.style.display='none'; Codehighlighter1_984_1131_Open_Text.style.display='none'; Codehighlighter1_984_1131_Closed_Image.style.display='inline'; Codehighlighter1_984_1131_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_984_1131_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_984_1131_Closed_Text.style.display='none'; Codehighlighter1_984_1131_Open_Image.style.display='inline'; Codehighlighter1_984_1131_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;FiscalYearPeriod&nbsp;</span><span id="Codehighlighter1_984_1131_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_984_1131_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;FiscalYearPeriodPK&nbsp;fiscalYearPeriodPK;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">开始日期</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Date&nbsp;beginDate;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">结束日期</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Date&nbsp;endDate;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">状态</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;periodSts;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:22 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-自关联映射</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300920.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300920.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300920.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300920.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300920.html</trackback:ping><description><![CDATA[1 class Node:<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Node&nbsp;parent;</span><span style="color: #008000">//</span><span style="color: #008000">交节点</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Set&nbsp;children;</span><span style="color: #008000">//</span><span style="color: #008000">子节点</span></div>
2 Node.hbm.xml:
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="node"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="com.my.hibernate.Node"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">many-to-one&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="parent"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="pid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">set&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="children"</span><span style="color: #ff0000">&nbsp;lazy</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000">&nbsp;inverse</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;&nbsp;cascade</span><span style="color: #0000ff">="all"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="pid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">one-to-many&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.my.hibernate.Node"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">set</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span></div>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:19 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-其他映射</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300919.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300919.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300919.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300919.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300919.html</trackback:ping><description><![CDATA[<span style="background-color: yellow">set、list、array、map</span><br />
<br />
Collection:<br />
&nbsp;private int id;<br />
&nbsp;private String name;<br />
&nbsp;private Set setValue;<br />
&nbsp;private List listValue;<br />
&nbsp;private String[] arrayValue;<br />
&nbsp;private Map mapValue;
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">class&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Collection"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">set&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="setValue"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_setvalue"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="setid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">element&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="string"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="setvalue"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">set</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">list&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="listValue"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_listvalue"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="listid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">list-index&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="listindex"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">element&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="string"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="listvalue"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">list</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">array&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="arrayValue"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_arrayvalue"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="arrayid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">list-index&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="arrayindex"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">element&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="string"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="arrayvalue"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">array</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="mapValue"</span><span style="color: #ff0000">&nbsp;table</span><span style="color: #0000ff">="t_mapvalue"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key&nbsp;</span><span style="color: #ff0000">column</span><span style="color: #0000ff">="mapid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map-key&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="string"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="mapkey"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">element&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="string"</span><span style="color: #ff0000">&nbsp;column</span><span style="color: #0000ff">="mapvalue"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">class</span><span style="color: #0000ff">&gt;</span></div>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:17 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hiberante基础-继承映射</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300918.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300918.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300918.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300918.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300918.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 继承映射的三种策略：&nbsp; * 单表继承，每棵类继承树使用一个表&nbsp; * 具体表继承，每个子类一个表&nbsp; * 类表继承，每个具体类一个表-----------------------------------------------------------------每棵类继承树映射成一张表1、理解如何映射&nbsp;&nbsp;因为类继承树肯定是对...&nbsp;&nbsp;<a href='http://www.blogjava.net/ywj-316/archive/2009/11/03/300918.html'>阅读全文</a><img src ="http://www.blogjava.net/ywj-316/aggbug/300918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:15 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-映射关系(一对多I多对多).</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300913.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300913.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300913.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300913.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300913.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一对多关联映射(one-to-many)一对多关联映射利用了多对一关联映射原理&nbsp; * 多对一关联映射:在多的一端加和一个外键指向一的一端,它维护的关系是多指向一的&nbsp; * 一对多关联映射:在一的一端加和一个外键指向多的一端,它维护的关系是一指向多的也就是说一对多和多对一的映射策略是一样的,只是站的角度不同,一般都作成双项的-------------------...&nbsp;&nbsp;<a href='http://www.blogjava.net/ywj-316/archive/2009/11/03/300913.html'>阅读全文</a><img src ="http://www.blogjava.net/ywj-316/aggbug/300913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 16:04 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-映射关系(多对一I一对一)</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300911.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300911.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300911.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300911.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300911.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 多对一关联映射 many-to-one关联映射本质：&nbsp; * 将关联关系映射到数据库，所谓的关联关系是对象模型在内存中的一个或多个引用。&nbsp; &lt;many-to-one/&gt;标签会在多的一端加入一个外键，指定一的一端，这个外键是由&lt;many-to-one&gt;中的column属性定义的，如果忽略了这个属性那么默认的外键与实体的属性一致&lt;...&nbsp;&nbsp;<a href='http://www.blogjava.net/ywj-316/archive/2009/11/03/300911.html'>阅读全文</a><img src ="http://www.blogjava.net/ywj-316/aggbug/300911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 15:53 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-基本映谢标签和属性</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300908.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300908.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300908.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300908.html</trackback:ping><description><![CDATA[hibernate基本映射<br />
实体类------&gt;表<br />
实体类的设计原则：<br />
&nbsp; * 实现一个默认(无参)的构造方法(constructor)<br />
&nbsp; * 提供一个标识属性(identifier property)<br />
&nbsp; * 使用非final的类<br />
&nbsp; * 为持久化字段声明访问器(accessors),即get/set方法<br />
实体类中的普通属性-----&gt;表字段<br />
采用&lt;class&gt;标签映射成数据库表，通过&lt;property&gt;标签将普通属性映射成表字段<br />
所谓普通属性不包括自定义类、集合和数组<br />
注意：表或字段与sql关键字一样，必须重名称<br />
&lt;hibernate-mapping/&gt;标签<br />
&lt;hibernate-mapping<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; schema="schemaName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catalog="catalogName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;(2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-cascade="cascade_style"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; (3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-access="field|property|ClassName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; (4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-lazy="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;(5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *auto-import="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *package="package.name"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; (7)<br />
&nbsp;/&gt;<br />
(6) auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名（仅限于本映射文件中的类）。 <br />
(7) package (可选): 指定一个包前缀，如果在映射文档中没有指定全限定的类名， 就使用这个作为包名。
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">hibernate-mapping&nbsp;</span><span style="color: #ff0000">package</span><span style="color: #0000ff">="com.my.hibernate"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="User"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="uuid"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="password"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="createTime"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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">="expireTime"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">hibernate-mapping</span><span style="color: #0000ff">&gt;</span></div>
<div title="Print Page Break" style="font-size: 1px; page-break-before: always; vertical-align: middle; width: 1003px; height: 35px; background-color: #c0c0c0">&nbsp; </div>
&lt;class/&gt;标签--表<br />
&lt;class<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *name="ClassName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *table="tableName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *discriminator-value="discriminator_value"&nbsp;&nbsp;&nbsp;&nbsp; (3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mutable="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; schema="owner"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catalog="catalog"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy="ProxyInterface"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *dynamic-update="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (8)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *dynamic-insert="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (9)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select-before-update="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (10)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polymorphism="implicit|explicit"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (11)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where="arbitrary sql where condition"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (12)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; persister="PersisterClass"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (13)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *batch-size="N"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (14)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *optimistic-lock="none|version|dirty|all"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (15)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *lazy="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (16)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; entity-name="EntityName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (17)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check="arbitrary sql check condition"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (18)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowid="rowid"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (19)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subselect="SQL expression"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (20)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *abstract="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (21)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node="element-name"<br />
/&gt;<br />
(1) name (可选): 持久化类（或者接口）的Java全限定名。 如果这个属性不存在，Hibernate将假定这是一个非POJO的实体映射。 <br />
(2) table (可选 - 默认是类的非全限定名): 对应的数据库表名。 <br />
(3) discriminator-value (可选 - 默认和类名一样): 一个用于区分不同的子类的值，在多态行为时使用。它可以接受的值包括 null 和 not null。 <br />
(8) dynamic-update (可选, 默认为 false): 指定用于UPDATE 的SQL将会在运行时动态生成，并且只更新那些改变过的字段。 <br />
(9) dynamic-insert (可选, 默认为 false): 指定用于INSERT的 SQL 将会在运行时动态生成，并且只包含那些非空值字段。 <br />
(14) batch-size (可选,默认是1) 指定一个用于 根据标识符（identifier）抓取实例时使用的"batch size"（批次抓取数量）。 <br />
(15) optimistic-lock（乐观锁定） (可选，默认是version): 决定乐观锁定的策略。 <br />
(16) lazy (可选): 通过设置lazy="false"， 所有的延迟加载（Lazy fetching）功能将被全部禁用（disabled）。 <br />
(21) abstract (可选): 用于在&lt;union-subclass&gt;的继承结构 （hierarchies）中标识抽象超类。
<div title="Print Page Break" style="font-size: 1px; page-break-before: always; vertical-align: middle; width: 1003px; height: 35px; background-color: #c0c0c0">&nbsp; </div>
<p>&lt;id/&gt;标签 -主键<br />
主键生成策略：<br />
uuid&nbsp; native 和assigned<br />
&lt;id<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *name="propertyName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="typename"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *column="column_name"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsaved-value="null|any|none|undefined|id_value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; access="field|property|ClassName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node="element-name|@attribute-name|element/@attribute|."&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;generator class="generatorClass"/&gt;<br />
&lt;/id&gt;<br />
(1) name (可选): 标识属性的名字。 <br />
(2) type (可选): 标识Hibernate类型的名字。 <br />
(3) column (可选 - 默认为属性名): 主键字段的名字。 <br />
(4) unsaved-value (可选 - 默认为一个切合实际（sensible）的值): 一个特定的标识属性值，用来标志该实例是刚刚创建的，尚未保存。 这可以把这种实例和从以前的session中装载过（可能又做过修改--译者注） 但未再次持久化的实例区分开来。 <br />
(5) access (可选 - 默认为property): Hibernate用来访问属性值的策略。 <br />
(6) 长度.</p>
<div title="Print Page Break" style="font-size: 1px; page-break-before: always; vertical-align: middle; width: 1003px; height: 35px; background-color: #c0c0c0">&nbsp; </div>
&lt;generator/&gt;生成唯一的标识<br />
&lt;id name="id" type="long" column="cat_id"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;generator class="uuid"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/generator&gt;<br />
&lt;/id&gt;<br />
identity<br />
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 <br />
sequence<br />
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列（sequence)， 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。 <br />
uuid<br />
用一个128-bit的UUID算法生成字符串类型的标识符， 这在一个网络中是唯一的（使用了IP地址）。UUID被编码为一个32位16进制数字的字符串。 <br />
native<br />
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。 <br />
assigned<br />
让应用程序在save()之前为对象分配一个标示符。这是 &lt;generator&gt;元素没有指定时的默认生成策略。 <br />
foreign<br />
使用另外一个相关联的对象的标识符。通常和&lt;one-to-one&gt;联合起来使用。
<div title="Print Page Break" style="font-size: 1px; page-break-before: always; vertical-align: middle; width: 1003px; height: 35px; background-color: #c0c0c0">&nbsp; </div>
&lt;property/&gt;生成字段<br />
&lt;property<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *name="propertyName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *column="column_name"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="typename"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formula="arbitrary SQL expression"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; access="field|property|ClassName"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lazy="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unique="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (8)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not-null="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (9)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; optimistic-lock="true|false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (10)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; generated="never|insert|always"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (11)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node="element-name|@attribute-name|element/@attribute|."<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index="index_name"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unique_key="unique_key_id"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length="L"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; precision="P"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scale="S"<br />
/&gt;<br />
(1) name: 属性的名字,以小写字母开头。 <br />
(2) column (可选 - 默认为属性名字): 对应的数据库字段名。 也可以通过嵌套的&lt;column&gt;元素指定。&nbsp; <br />
(4) update, insert (可选 - 默认为 true) : 表明用于UPDATE 和/或 INSERT 的SQL语句中是否包含这个被映射了的字段。这二者如果都设置为false 则表明这是一个&#8220;外源性（derived）&#8221;的属性，它的值来源于映射到同一个（或多个） 字段的某些其他属性，或者通过一个trigger(触发器）或其他程序生成。 <br />
(7) lazy (可选 - 默认为 false): 指定 指定实例变量第一次被访问时，这个属性是否延迟抓取（fetched lazily）（ 需要运行时字节码增强）。 <br />
(8) unique (可选): 使用DDL为该字段添加唯一的约束。 同样，允许它作为property-ref引用的目标。 <br />
(9) not-null (可选): 使用DDL为该字段添加可否为空（nullability）的约束。 <br />
<br />
<span style="background-color: yellow">映射文件中一般类型中可以省略，其他不略</span>
  <img src ="http://www.blogjava.net/ywj-316/aggbug/300908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 15:35 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate基础-初步</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300903.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300903.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300903.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300903.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 类拟框架：Apache OJB,JDO,Toplink,EJB(CMP)JPA,IBatis适合查询及单个对象的编辑，适合于对象之间有清晰的关系，不适用于批量修改,关系复杂的对象及特定的sql功能第一个项目1 新建java项目2 创建User Library,加入如下jar&nbsp; * hibernate_home/hibernate3.jar&nbsp; * hibe...&nbsp;&nbsp;<a href='http://www.blogjava.net/ywj-316/archive/2009/11/03/300903.html'>阅读全文</a><img src ="http://www.blogjava.net/ywj-316/aggbug/300903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 15:26 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>