﻿<?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-Sun</title><link>http://www.blogjava.net/beijing2008/</link><description>是选择你爱的人还是爱你的人?</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 08:58:01 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 08:58:01 GMT</pubDate><ttl>60</ttl><item><title>怀念罗纳尔多(二)</title><link>http://www.blogjava.net/beijing2008/archive/2010/06/22/324107.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Mon, 21 Jun 2010 17:38:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/06/22/324107.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/324107.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/06/22/324107.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/324107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/324107.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一个男人，要走多远的路，才能成为真正的男人？&nbsp;&nbsp;<a href='http://www.blogjava.net/beijing2008/archive/2010/06/22/324107.html'>阅读全文</a><img src ="http://www.blogjava.net/beijing2008/aggbug/324107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-06-22 01:38 <a href="http://www.blogjava.net/beijing2008/archive/2010/06/22/324107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怀念罗纳尔多</title><link>http://www.blogjava.net/beijing2008/archive/2010/06/22/324106.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Mon, 21 Jun 2010 17:34:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/06/22/324106.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/324106.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/06/22/324106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/324106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/324106.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 来吧，罗纳尔多！<br>无论时光流逝多少<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/beijing2008/archive/2010/06/22/324106.html'>阅读全文</a><img src ="http://www.blogjava.net/beijing2008/aggbug/324106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-06-22 01:34 <a href="http://www.blogjava.net/beijing2008/archive/2010/06/22/324106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无题</title><link>http://www.blogjava.net/beijing2008/archive/2010/06/20/324006.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Sun, 20 Jun 2010 09:43:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/06/20/324006.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/324006.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/06/20/324006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/324006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/324006.html</trackback:ping><description><![CDATA[<span style="font-family: 隶书; font-size: 10pt">城市灯火何止万家<br />
那星星点点的光亮<br />
映衬风雨健硕轻盈的舞步<br />
追逐自由形骸的放浪<br />
而偏远乡村沉寂在自然中<br />
只有一息微弱灯影在清风中摇晃<br />
等待希冀的再生<br />
渴望冒出拔地楼房<br />
伤逝隐进梦的土壤<br />
</span>
<img src ="http://www.blogjava.net/beijing2008/aggbug/324006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-06-20 17:43 <a href="http://www.blogjava.net/beijing2008/archive/2010/06/20/324006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webService：Provider org.apache.xalan.processor.TransformerFactoryImpl not found</title><link>http://www.blogjava.net/beijing2008/archive/2010/05/13/320928.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Thu, 13 May 2010 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/05/13/320928.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/320928.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/05/13/320928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/320928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/320928.html</trackback:ping><description><![CDATA[<p>webService项目<br />
Tomcat5.0.28 + JDK1.5 + xfire1.2.6<br />
<br />
项目从Tomcat6.0项目拷贝回来，tomcat6.0运行正常。<br />
问题出在Tomcat的<br />
\common\endorsed\下<br />
删除或apache网站下载更新这两个jar即可。<br />
<br />
</p>
<img src ="http://www.blogjava.net/beijing2008/aggbug/320928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-05-13 21:28 <a href="http://www.blogjava.net/beijing2008/archive/2010/05/13/320928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于 字节码增强 摘要</title><link>http://www.blogjava.net/beijing2008/archive/2010/05/08/320382.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Sat, 08 May 2010 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/05/08/320382.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/320382.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/05/08/320382.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/320382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/320382.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">JPOX requires that all classes that are persisted implement <em>PersistenceCapable</em>, an interface defined by JDO. <strong>Why should we do this, Hibernate/TopLink dont need it ?</strong>. Well thats a simple question really </span></p>
<ul>
    <li><span style="font-size: 10pt">JPOX uses this <em>PersistenceCapable</em> interface, and adds it using bytecode enhancement techniques so that you never need to actually change your classes. This means that you get <strong>transparent persistence</strong>, and your classes always remain <em>your</em> classes. ORM tools that use a mix of reflection and/or proxies are not totally transparent.</span></li>
    <li><span style="font-size: 10pt">JPOX' use of <em>PersistenceCapable</em> provides transparent change tracking. When any change is made to an object the change creates a notification to JPOX allowing it to be optimally persisted. ORM tools that dont have access to such change tracking have to use reflection to detect changes. The performance of this process will break down as soon as you read a large number of objects, but modify just a handful, with these tools having to compare all object states for modification at transaction commit time.</span></li>
</ul>
<p><span style="font-size: 10pt">In a JDO-enabled application there are 3 categories of classes. These are <em>PersistenceCapable</em>, <em>PersistenceAware</em> and normal classes. The Meta-Data defines which classes fit into these categories. To give an example for JDO, we have 3 classes. The class <em>A</em> is to be persisted in the datastore. The class <em>B</em> directly updates the fields of class <em>A</em> but doesn't need persisting. The class <em>C</em> is not involved in the persistence process. We would define JDO MetaData for these classes like this <br />
<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">A</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;persistence</span><span style="color: #000000">-</span><span style="color: #000000">modifier</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">persistence-capable</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">field&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">myField</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">field</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
</span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">B</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;persistence</span><span style="color: #000000">-</span><span style="color: #000000">modifier</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">persistence-aware</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">8</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span></div>
<p></span></p>
<p><br />
&nbsp;</p>
<p>So our MetaData is mainly for those classes that are <em>PersistenceCapable</em> and are to be persisted to the datastore (we don't really need the <em>persistence-modifier</em> for thse classes since this is the default). For <em>PersistenceAware</em> classes we simply notate that the class knows about persistence. We don't define MetaData for any class that has no knowledge of persistence. </p>
<p>JDO requires that all classes to be persisted must implement the <em>PersistenceCapable</em> interface <a href="http://db.apache.org/jdo/api20/apidocs/javax/jdo/spi/PersistenceCapable.html" target="_blank"></img></a>. Users could manually do this themselves but this would impose work on them. JDO permits the use of a byte-code enhancer that converts the users normal classes to implement this interface. JPOX provides its own byte-code enhancer (this can be found in the <em>jpox-enhancer.jar</em>). This section describes how to use this enhancer with JPOX. The JPOX enhancer fully implements JDO2 and so is the recommended choice when persisting using the JDO2 API. The enhancement process adds the necessary methods to the users class in order to implement <em>PersistenceCapable</em>. </p>
<p></img><img style="width: 414px; height: 224px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/beijing2008/1.gif" width="414" height="224" /><br />
<br />
</p>
<p>The example above doesn't show all <em>PersistenceCapable</em> methods, but demonstrates that all added methods and fields are prefixed with "jdo" to distinguish them from the users own methods and fields. Also each persistent field of the class will be given a jdoGetXXX, jdoSetXXX method so that accesses of these fields are intercepted so that JDO can manage their "dirty" state. </p>
<p>The MetaData defines which classes are required to be persisted, and also defines which aspects of persistence each class requires. For example if a class has the <em>detachable</em> attribute set to <em>true</em>, then that class will be enhanced to also implement <em>Detachable</em> <a href="http://db.apache.org/jdo/api20/apidocs/javax/jdo/spi/Detachable.html" target="_blank"></img></a> </p>
<p></img><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/beijing2008/1.gif" width="426" height="230" /><br />
<br />
</p>
<p>Again, the example above doesn't show all methods added for the Detachable interface but the main thing to know is that the detached state (object id of the datastore object, the version of the datastore object when it was detached, and which fields were detached is stored in "jdoDetachedState"). Please see the JDO spec for more details. </p>
<p><strong>If the MetaData is changed in any way during development, the classes should always be recompiled and re-enhanced afterwards.</strong> </p>
<div class="subsection">
<table class="header3" border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr valign="middle">
            <td><a name="Byte-Code_Enhancement_Myths">Byte-Code Enhancement Myths</a></td>
        </tr>
    </tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td class="header3shadow"><img class="header3img" border="0" width="100%" height="1"  alt="" /></img></td>
        </tr>
    </tbody>
</table>
<p>Some groups (e.g Hibernate) perpetuated arguments against "byte-code enhancement" saying that it was somehow 'evil'. The most common were :- </p>
<ul>
    <li><em>Slows down the code-test cycle</em>. This is erroneous since you only need to enhance just before test and the provided plugins for Ant, Eclipse and Maven all do the enhancement job automatically and rapidly.</li>
    <li><em>Is less "lazy" than the proxy approach since you have to load the object as soon as you get a pointer to it</em>. In a 1-1 relation you <u>have to load</u> the object then since you would cause issues with null pointers otherwise. With 1-N relations you load the elements of the collection/map only when you access them and not the collection/map. Hardly an issue then is it!</li>
    <li><em>Fail to detect changes to public fields unless you enhance your client code</em>. Firstly very few people will be writing code with public fields since it is bad practice in an OO design, and secondly, this is why we have "PersistenceAware" classes.</li>
</ul>
<p>So as you can see, there are no valid reasons against byte-code enhancement, and the pluses are that runtime detection of dirty events on objects is much quicker, hence your persistence layer operates faster without any need for iterative reflection-based checks. The fact is that Hibernate itself also now has a mode whereby you can do bytecode enhancement although not the default mode of Hibernate. So maybe it wasn't so evil after all ? </p>
</div>
<p>&nbsp;</p>
 <img src ="http://www.blogjava.net/beijing2008/aggbug/320382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-05-08 23:57 <a href="http://www.blogjava.net/beijing2008/archive/2010/05/08/320382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL #1005 - Can't create table(...) (errno: 121) </title><link>http://www.blogjava.net/beijing2008/archive/2010/05/05/320152.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Wed, 05 May 2010 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/05/05/320152.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/320152.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/05/05/320152.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/320152.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/320152.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: MySQL #1005 - Can't create table(...) (errno: 121) &nbsp;&nbsp;<a href='http://www.blogjava.net/beijing2008/archive/2010/05/05/320152.html'>阅读全文</a><img src ="http://www.blogjava.net/beijing2008/aggbug/320152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-05-05 22:30 <a href="http://www.blogjava.net/beijing2008/archive/2010/05/05/320152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>腾讯怎么能这样？</title><link>http://www.blogjava.net/beijing2008/archive/2010/04/22/319069.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Thu, 22 Apr 2010 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/04/22/319069.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/319069.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/04/22/319069.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/319069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/319069.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt">腾讯这么大的企业，QQ空间的日志竟然不控制多次提交的问题。<br />
中国的公司都这么浮躁。<br />
小公司为了生存还能理解。<br />
腾讯这么大的纳斯达克上市企业也这样...</p>
 <img src ="http://www.blogjava.net/beijing2008/aggbug/319069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-04-22 10:01 <a href="http://www.blogjava.net/beijing2008/archive/2010/04/22/319069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于struts动态form_DynaActionForm</title><link>http://www.blogjava.net/beijing2008/archive/2010/04/20/318862.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Tue, 20 Apr 2010 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/04/20/318862.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/318862.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/04/20/318862.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/318862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/318862.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt">今天有人问前台表单form动态生成，后台使用DynaActionForm怎么用，说了他没懂，就写了个例子。<br />
<br />
<strong>Action配置</strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">action<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">testMappingForm</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/jsp</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">testMappingForm</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/testMapping</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">request</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.modo.struts.action.TestMappingAction</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span></div>
<p style="font-size: 10pt"><br />
<strong>ActionForm配置</strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">form</span><span style="color: #000000">-</span><span style="color: #000000">bean&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">testMappingForm</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.apache.struts.action.DynaActionForm</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">form</span><span style="color: #000000">-</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">fnames</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java.util.HashMap</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">form</span><span style="color: #000000">-</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">form</span><span style="color: #000000">-</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span></div>
<p style="font-size: 10pt">请注意name属性，这个属性后面要用到。<br />
<br />
<br />
然后是页面index.jsp,这里只模拟动态</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span><span style="color: #000000">html:form&nbsp;action</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/testMapping.do</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">post</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;%</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">5</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">){&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">html:text&nbsp;property</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;%=</span><span style="color: #000000">"</span><span style="color: #000000">fnames(name_</span><span style="color: #000000">"</span><span style="color: #000000">+i+</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">"</span><span style="color: #000000">%&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;%=</span><span style="color: #000000">"</span><span style="color: #000000">gangye_</span><span style="color: #000000">"</span><span style="color: #000000">+i%&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">html:text</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">br</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;%</span><span style="color: #000000">}</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">html:submit&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Submit&nbsp;Form<img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">html:form</span><span style="color: #000000">&gt;</span></div>
<p style="font-size: 10pt">请注意html:text的property标签。<br />
<br />
<br />
index.jsp效果如下<br />
<img height="191" alt="" src="http://www.blogjava.net/images/blogjava_net/beijing2008/2222.jpg" width="180" border="0" /><br />
后台Action</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,&nbsp;HttpServletRequest&nbsp;request,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap&nbsp;&nbsp;&nbsp;hm</span><span style="color: #000000">=</span><span style="color: #000000">(HashMap)((DynaActionForm)form).get(</span><span style="color: #000000">"</span><span style="color: #000000">fnames</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;hm.entrySet().iterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map.Entry&nbsp;entry&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entry&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Map.Entry)it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(entry.getKey()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;entry.getValue());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p style="font-size: 10pt"><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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">name_4&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gangye_4<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />name_0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gangye_0<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />name_2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gangye_2<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />name_1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gangye_1<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />name_3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gangye_3<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p style="font-size: 10pt"><br />
<br />
&nbsp;</p>
<p style="font-size: 10pt"><br />
<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/beijing2008/aggbug/318862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-04-20 15:56 <a href="http://www.blogjava.net/beijing2008/archive/2010/04/20/318862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>org.springframework.web.struts.ContextLoaderPlugIn 和 org.springframework.web.context.ContextLoaderListener</title><link>http://www.blogjava.net/beijing2008/archive/2010/04/11/317973.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Sat, 10 Apr 2010 18:24:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/04/11/317973.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/317973.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/04/11/317973.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/317973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/317973.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">org.springframework.web.struts.ContextLoaderPlugIn&nbsp;和&nbsp;org.springframework.web.context.ContextLoaderListener</span></div>
<br />
<span style="font-family: 微软雅黑"><span style="font-size: 12pt"><span style="font-family: 微软雅黑; font-size: 10pt">是视图层加载sping的两种方式。<br style="font-family: " />
那么这两种方式谁的优先级高，从容器加载程度上看，是org.springframework.web.context.ContextLoaderListener<br style="font-family: " />
<br style="font-family: " />
那么中方式都被配置在项目中，会使用哪个一个呢？<br style="font-family: " />
答案是org.springframework.web.struts.ContextLoaderPlugIn<br style="font-family: " />
</span></span><br />
<span style="font-family: 微软雅黑; font-size: 10pt">当然如果你不需要在视图层采用lazy而配置org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br style="font-family: " />
那么你可以两个都配置。<br style="font-family: " />
但如果你需要使用，那就会。<br style="font-family: " />
<br style="font-family: " />
</span><span style="font-family: 微软雅黑; font-size: 10pt">我们知道，容器初始化Spring配置文件时，使用getServletContext<span style="font-family: ; color: #000000">(</span><span style="font-family: ; color: #000000">)</span>.<span style="font-family: ; color: #000000">setAttribute方法key,value全局保存。<br style="font-family: " />
那么当你使用OpenSessionInViewFilter时，他取得的是哪个呢？<br style="font-family: " />
</span></span><span style="color: #000000"><br />
<span style="font-family: 微软雅黑; font-size: 10pt"><span style="font-family: "><span style="font-family: ; color: #000000">其实OpenSessionInViewFilter是sping的Filter,它</span></span>采用WebApplicationContextUtils的方式获得WebApplicationContext<br style="font-family: " />
，但它并不能加载由struts-config.xml文件ContextLoaderPlugIn提供初始化的上下文。<br />
<br />
如果你需要在视图层加载一对对....等关联对象。那么就会有<br />
could not initialize proxy - the owning Session was closed<br />
错误。<br />
到此处我们看到，sping在应用程序和OpenSessionInViewFilter之间，加载了不同的上下文。<br />
我们知道OpenSessionInViewFilter下无法获得ContextLoaderPlugIn加载的上下文，那我们可以推算，<br />
应用程序应该加载了ContextLoaderPlugIn上下文，而OpenSessionInViewFilter却加载了ContextLoaderListener的上下文。<br />
才导致视图层session有关闭的问题。<br />
<br />
尝试解决此问题，若你配置了两个，则删除ContextLoaderPlugIn的加载方式。<br />
若你只配置了ContextLoaderPlugIn的加载方式，则改成ContextLoaderListener加载方式。<br />
<br />
<span style="color: red"><strong>原创文章，转载请注明出处。<br />
<a href="http://www.blogjava.net/beijing2008/articles/317973.html">http://www.blogjava.net/beijing2008/articles/317973.html</a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</strong></span><br />
</span></span></span>
  <img src ="http://www.blogjava.net/beijing2008/aggbug/317973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-04-11 02:24 <a href="http://www.blogjava.net/beijing2008/archive/2010/04/11/317973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getHibernateTemplate().save和super.getHibernateTemplate().merge</title><link>http://www.blogjava.net/beijing2008/archive/2010/04/10/317924.html</link><dc:creator>.Sun</dc:creator><author>.Sun</author><pubDate>Sat, 10 Apr 2010 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/beijing2008/archive/2010/04/10/317924.html</guid><wfw:comment>http://www.blogjava.net/beijing2008/comments/317924.html</wfw:comment><comments>http://www.blogjava.net/beijing2008/archive/2010/04/10/317924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beijing2008/comments/commentRss/317924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beijing2008/services/trackbacks/317924.html</trackback:ping><description><![CDATA[<p>代码1_save：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">super</span><span style="color: #000000">.getHibernateTemplate().save(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">user.getId());</span></div>
<br />
输出1：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">Hibernate:&nbsp;insert&nbsp;into&nbsp;user&nbsp;(userid,&nbsp;userpwd,&nbsp;userques,&nbsp;userans,&nbsp;usermail,&nbsp;integral,&nbsp;grade,&nbsp;sex,&nbsp;realname)&nbsp;values&nbsp;(</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;</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;</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">)<br />
：</span><span style="color: #000000">9</span></div>
<br />
<br />
<br />
代码2_merge：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">super</span><span style="color: #000000">.getHibernateTemplate().merge(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">user.getId());</span></div>
<br />
输出2：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">Hibernate:&nbsp;insert&nbsp;into&nbsp;user&nbsp;(userid,&nbsp;userpwd,&nbsp;userques,&nbsp;userans,&nbsp;usermail,&nbsp;integral,&nbsp;grade,&nbsp;sex,&nbsp;realname)&nbsp;values&nbsp;(</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;</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;</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">)<br />
：</span><span style="color: #000000">0</span></div>
<br />
<br />
代码3_merge：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">user&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(User)</span><span style="color: #0000ff">super</span><span style="color: #000000">.getHibernateTemplate().merge(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">user.getId());</span></div>
<br />
输出3：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">Hibernate:&nbsp;insert&nbsp;into&nbsp;user&nbsp;(userid,&nbsp;userpwd,&nbsp;userques,&nbsp;userans,&nbsp;usermail,&nbsp;integral,&nbsp;grade,&nbsp;sex,&nbsp;realname)&nbsp;values&nbsp;(</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;</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;</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">)<br />
：</span><span style="color: #000000">11</span><span style="color: #000000"><br />
</span></div>
<br />
当我们使用merge的时候，执行完成，我们提供的对象A还是脱管状态，hibernate或者new了一个B，或者检索到<br />
一个持久对象B，并把我们提供的对象A的所有的值拷贝到这个B，执行完成后B是持久状态，而我们提供的A还是托管状态<br />
<br />
<br />
继续看代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">super</span><span style="color: #000000">.getHibernateTemplate().save(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setUserans(</span><span style="color: #000000">"</span><span style="color: #000000">杭州BST</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">user.getId());</span></div>
输出：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">Hibernate:&nbsp;insert&nbsp;into&nbsp;user&nbsp;(userid,&nbsp;userpwd,&nbsp;userques,&nbsp;userans,&nbsp;usermail,&nbsp;integral,&nbsp;grade,&nbsp;sex,&nbsp;realname)&nbsp;values&nbsp;(</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;</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;</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">)<br />
：</span><span style="color: #000000">13</span><span style="color: #000000"><br />
Hibernate:&nbsp;update&nbsp;user&nbsp;set&nbsp;userid</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;userpwd</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;userques</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;userans</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;usermail</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;integral</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;grade</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;sex</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;realname</span><span style="color: #000000">=?</span><span style="color: #000000">&nbsp;where&nbsp;id</span><span style="color: #000000">=?</span><span style="color: #000000"><br />
</span></div>
<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; height: 135px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">super</span><span style="color: #000000">.getHibernateTemplate().merge(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setUserans(</span><span style="color: #000000">"</span><span style="color: #000000">杭州BST</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">user.getId());<br />
<br />
-------------------------<br />
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (?, ?, ?, ?, ?, ?, ?, ?, ?)<br />
：0<br />
<br />
<br />
</span></div>
<br />
<br />
其实，我们也可以这样显示修改状态。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">user&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(User)</span><span style="color: #0000ff">super</span><span style="color: #000000">.getHibernateTemplate().merge(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setUserans(</span><span style="color: #000000">"</span><span style="color: #000000">杭州BST</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">user.getId());<br />
<br />
</span><span style="color: #000000">--------------------</span><span style="color: #000000"><br />
<br />
Hibernate:&nbsp;insert&nbsp;into&nbsp;user&nbsp;(userid,&nbsp;userpwd,&nbsp;userques,&nbsp;userans,&nbsp;usermail,&nbsp;integral,&nbsp;grade,&nbsp;sex,&nbsp;realname)&nbsp;values&nbsp;(</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;</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;</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">)<br />
：</span><span style="color: #000000">16</span><span style="color: #000000"><br />
Hibernate:&nbsp;update&nbsp;user&nbsp;set&nbsp;userid</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;userpwd</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;userques</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;userans</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;usermail</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;integral</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;grade</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;sex</span><span style="color: #000000">=?</span><span style="color: #000000">,&nbsp;realname</span><span style="color: #000000">=?</span><span style="color: #000000">&nbsp;where&nbsp;id</span><span style="color: #000000">=?</span><span style="color: #000000"><br />
</span></div>
<br />
<span style="color: red"><strong>原创文章，转载请注明出处。</strong></span><br />
<a href="http://www.blogjava.net/beijing2008/articles/317924.html">http://www.blogjava.net/beijing2008/articles/317924.html</a><br />
<br />
<br />
 <img src ="http://www.blogjava.net/beijing2008/aggbug/317924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beijing2008/" target="_blank">.Sun</a> 2010-04-10 12:10 <a href="http://www.blogjava.net/beijing2008/archive/2010/04/10/317924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>