﻿<?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-面朝大海,春暖花开</title><link>http://www.blogjava.net/sodmewuhan/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 10:02:00 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 10:02:00 GMT</pubDate><ttl>60</ttl><item><title>开始新项目了</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/06/05/50586.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Mon, 05 Jun 2006 14:09:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/06/05/50586.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/50586.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/06/05/50586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/50586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/50586.html</trackback:ping><description><![CDATA[马上要做新项目了，项目不大，准备用ajax来练练手，HOHO!<img src ="http://www.blogjava.net/sodmewuhan/aggbug/50586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-06-05 22:09 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/06/05/50586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一本好书关于JAVA5.0和TDD的</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/05/12/45900.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Fri, 12 May 2006 11:17:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/05/12/45900.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/45900.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/05/12/45900.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/45900.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/45900.html</trackback:ping><description><![CDATA[今天在网上闲逛，发现了一本好书，关于JAVA和TDD的，内容介绍如下：<br /><p class="docText"><span class="docEmphStrong">Master Java 5.0 and TDD Together: Build More Robust, Professional Software</span></p><p class="docText">Master Java 5.0, object-oriented design, and Test-Driven Development (TDD) by learning them together. Agile Java weaves all three into a single coherent approach to building professional, robust software systems. Jeff Langr shows exactly how Java and TDD integrate throughout the entire development lifecycle, helping you leverage today's fastest, most efficient development techniques from the very outset.</p><p class="docText">Langr writes for every programmer, even those with little or no experience with Java, object-oriented development, or agile methods. He shows how to translate oral requirements into practical tests, and then how to use those tests to create reliable, high-performance Java code that solves real problems. Agile Java doesn't just teach the core features of the Java language: it presents coded test examples for each of them. This TDD-centered approach doesn't just lead to better code: it provides powerful feedback that will help you learn Java far more rapidly. The use of TDD as a learning mechanism is a landmark departure from conventional teaching techniques.</p><ul><li><p class="docList">Presents an expert overview of TDD and agile programming techniques from the Java developer's perspective</p></li><li><p class="docList">Brings together practical best practices for Java, TDD, and OO design</p></li><li><p class="docList">Walks through setting up Java 5.0 and writing your first program</p></li><li><p class="docList">Covers all the basics, including strings, packages, and more</p></li><li><p class="docList">Simplifies object-oriented concepts, including classes, interfaces, polymorphism, and inheritance</p></li><li><p class="docList">Contains detailed chapters on exceptions and logging, math, I/O, reflection, multithreading, and Swing</p></li><li><p class="docList">Offers seamlessly-integrated explanations of Java 5.0's key innovations, from generics to annotations</p></li><li><p class="docList">Shows how TDD impacts system design, and vice versa</p></li><li><p class="docList">Complements any agile or traditional methodology, including Extreme Programming (XP)</p></li></ul><p class="docList"><br />E文不算太难，一般都应该可以看懂，为什么好书都是老外写的呢？<img height="20" src="http://www.blogjava.net/Emoticons/hitwall.gif" width="25" border="0" /><br />我想把书传上来，但是.Text对文件的大小好象是有限制，书的名字叫<br /><strong>Agile Java Crafting Code with Test-Driven Development，想要的同学可以留下EMAIL</strong></p><img src ="http://www.blogjava.net/sodmewuhan/aggbug/45900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-05-12 19:17 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/05/12/45900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个分析Castle很好的系列文章</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/28/43880.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Fri, 28 Apr 2006 14:04:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/28/43880.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/43880.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/28/43880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/43880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/43880.html</trackback:ping><description><![CDATA[很早就听说过<span lang="EN-US"><font face="宋体" size="2">Castle的大名了，但是一直没有时间去研究。一方面也是自己的惰性，另一方面也关于<span lang="EN-US">Castle的分析文章太少了。但是不管怎么说，面对这这么优秀的项目没有一睹芳容，真是<img height="20" src="http://www.blogjava.net/Emoticons/hitwall.gif" width="25" border="0" />。现在好了，在<a id="Header1_MyLinks1_HomeLink" href="http://www.cnblogs.com/"><font size="3">博客园</font></a>找到了一个关于<span lang="EN-US"><font face="宋体" size="2">Castle的</font></span>系列文章，先收藏个连接，51在休息的空隙，还可以抽出点时间好好研究好东东，<img height="19" src="http://www.blogjava.net/Emoticons/regular_smile.gif" width="19" border="0" />。<br /><a href="http://www.cnblogs.com/Terrylee/archive/2006/04/28/387503.html">http://www.cnblogs.com/Terrylee/archive/2006/04/28/387503.html</a></span></font></span><img src ="http://www.blogjava.net/sodmewuhan/aggbug/43880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-28 22:04 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/28/43880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Proxy模式介绍</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Thu, 27 Apr 2006 12:33:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/43653.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/43653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/43653.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">近来很忙，一直没写</span>
				<span lang="EN-US">blog</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">了，今天晚上有点时间，听了节</span>
				<span lang="EN-US">MSDN</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">上面的一节</span>
				<span lang="EN-US">webCast</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，讲的就是</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式，本就就是这节课的笔记。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">学习设计模式也有段时间了，很早也见过</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式的，记得最开始接触</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式还是在著名的</span>
				<span lang="EN-US">JIVE</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">论坛（</span>
				<span lang="EN-US">JIVE</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中用</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来做权限控制）。今天算是一遍复习吧。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对复杂的软件系统，人们常常用的一种处理手法是在系统增加一层间接层，得到对系统灵活的、满足特殊要求的解决方案。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">使用</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式的动机：在</span>
				<span lang="EN-US">OO</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的开发过程中，某些对象的开销很大（如：</span>
				<span lang="EN-US">new</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的开销大、某些对象因为安全的原因不能被客户直接的调用等），如果直接操作这些对象会破坏系统结构。那么，我们就用代理对象来控制对象的访问。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 57pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 57.0pt">
				<span lang="EN-US" style="mso-bidi-font-family: 宋体">
						<span style="mso-list: Ignore">例子，<span style="FONT: 7pt 'Times New Roman'">   </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">一个常见的</span>
				<span lang="EN-US">HR</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">系统：<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" />
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> System;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> Employee<br /><img id="Codehighlighter1_30_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_149_Open_Text.style.display='none'; Codehighlighter1_30_149_Closed_Image.style.display='inline'; Codehighlighter1_30_149_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_30_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_149_Closed_Text.style.display='none'; Codehighlighter1_30_149_Open_Image.style.display='inline'; Codehighlighter1_30_149_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_30_149_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" />
				</span>
				<span id="Codehighlighter1_30_149_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary()<br /><img id="Codehighlighter1_60_71_Open_Image" onclick="this.style.display='none'; Codehighlighter1_60_71_Open_Text.style.display='none'; Codehighlighter1_60_71_Closed_Image.style.display='inline'; Codehighlighter1_60_71_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_60_71_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_71_Closed_Text.style.display='none'; Codehighlighter1_60_71_Open_Image.style.display='inline'; Codehighlighter1_60_71_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_60_71_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" />
						</span>
						<span id="Codehighlighter1_60_71_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report()<br /><img id="Codehighlighter1_96_106_Open_Image" onclick="this.style.display='none'; Codehighlighter1_96_106_Open_Text.style.display='none'; Codehighlighter1_96_106_Closed_Image.style.display='inline'; Codehighlighter1_96_106_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_96_106_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_106_Closed_Text.style.display='none'; Codehighlighter1_96_106_Open_Image.style.display='inline'; Codehighlighter1_96_106_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_96_106_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" />
						</span>
						<span id="Codehighlighter1_96_106_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation()<br /><img id="Codehighlighter1_138_147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_147_Open_Text.style.display='none'; Codehighlighter1_138_147_Closed_Image.style.display='inline'; Codehighlighter1_138_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_138_147_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_138_147_Closed_Text.style.display='none'; Codehighlighter1_138_147_Open_Image.style.display='inline'; Codehighlighter1_138_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_138_147_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" />
						</span>
						<span id="Codehighlighter1_138_147_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> HrSys<br /><img id="Codehighlighter1_164_301_Open_Image" onclick="this.style.display='none'; Codehighlighter1_164_301_Open_Text.style.display='none'; Codehighlighter1_164_301_Closed_Image.style.display='inline'; Codehighlighter1_164_301_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_164_301_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_301_Closed_Text.style.display='none'; Codehighlighter1_164_301_Open_Image.style.display='inline'; Codehighlighter1_164_301_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_164_301_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" />
				</span>
				<span id="Codehighlighter1_164_301_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ProcessEmployee<br /><img id="Codehighlighter1_215_235_Open_Image" onclick="this.style.display='none'; Codehighlighter1_215_235_Open_Text.style.display='none'; Codehighlighter1_215_235_Closed_Image.style.display='inline'; Codehighlighter1_215_235_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_215_235_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_235_Closed_Text.style.display='none'; Codehighlighter1_215_235_Open_Image.style.display='inline'; Codehighlighter1_215_235_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        (Employee employee</span>
						<span id="Codehighlighter1_215_235_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">/**/</span>
						<span id="Codehighlighter1_215_235_Open_Text">
								<span style="COLOR: #008000">/*</span>
								<span style="COLOR: #008000">该对象和HR系统在同一个地址空间中</span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_239_299_Open_Image" onclick="this.style.display='none'; Codehighlighter1_239_299_Open_Text.style.display='none'; Codehighlighter1_239_299_Closed_Image.style.display='inline'; Codehighlighter1_239_299_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_239_299_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_239_299_Closed_Text.style.display='none'; Codehighlighter1_239_299_Open_Image.style.display='inline'; Codehighlighter1_239_299_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_239_299_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" />
						</span>
						<span id="Codehighlighter1_239_299_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employee.Report();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employee.ApplyVacation();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">现在要求把</span>
				<span lang="EN-US">
						<font face="Times New Roman">Employee</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">做成</span>
				<span lang="EN-US">
						<font face="Times New Roman">webService</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">
						<font face="Times New Roman">HR</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">系统通过</span>
				<span lang="EN-US">
						<font face="Times New Roman">webService</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来调用</span>
				<span lang="EN-US">
						<font face="Times New Roman">Employee</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对象，代码修改如下：<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" />
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> System;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">interface</span>
				<span style="COLOR: #000000"> IEmployee<br /><img id="Codehighlighter1_35_118_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_118_Open_Text.style.display='none'; Codehighlighter1_35_118_Closed_Image.style.display='inline'; Codehighlighter1_35_118_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_118_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_118_Closed_Text.style.display='none'; Codehighlighter1_35_118_Open_Image.style.display='inline'; Codehighlighter1_35_118_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_35_118_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" />
				</span>
				<span id="Codehighlighter1_35_118_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">运行在internet上面的某台机器</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> Employee : IEmployee<br /><img id="Codehighlighter1_168_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_168_287_Open_Text.style.display='none'; Codehighlighter1_168_287_Closed_Image.style.display='inline'; Codehighlighter1_168_287_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_168_287_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_168_287_Closed_Text.style.display='none'; Codehighlighter1_168_287_Open_Image.style.display='inline'; Codehighlighter1_168_287_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_168_287_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" />
				</span>
				<span id="Codehighlighter1_168_287_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary()<br /><img id="Codehighlighter1_198_209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_198_209_Open_Text.style.display='none'; Codehighlighter1_198_209_Closed_Image.style.display='inline'; Codehighlighter1_198_209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_198_209_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_198_209_Closed_Text.style.display='none'; Codehighlighter1_198_209_Open_Image.style.display='inline'; Codehighlighter1_198_209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_198_209_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" />
						</span>
						<span id="Codehighlighter1_198_209_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report()<br /><img id="Codehighlighter1_234_244_Open_Image" onclick="this.style.display='none'; Codehighlighter1_234_244_Open_Text.style.display='none'; Codehighlighter1_234_244_Closed_Image.style.display='inline'; Codehighlighter1_234_244_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_234_244_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_234_244_Closed_Text.style.display='none'; Codehighlighter1_234_244_Open_Image.style.display='inline'; Codehighlighter1_234_244_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_234_244_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" />
						</span>
						<span id="Codehighlighter1_234_244_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation()<br /><img id="Codehighlighter1_276_285_Open_Image" onclick="this.style.display='none'; Codehighlighter1_276_285_Open_Text.style.display='none'; Codehighlighter1_276_285_Closed_Image.style.display='inline'; Codehighlighter1_276_285_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_276_285_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_276_285_Closed_Text.style.display='none'; Codehighlighter1_276_285_Open_Image.style.display='inline'; Codehighlighter1_276_285_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_276_285_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" />
						</span>
						<span id="Codehighlighter1_276_285_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</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" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> EmployeeProxy : IEmployee<br /><img id="Codehighlighter1_333_627_Open_Image" onclick="this.style.display='none'; Codehighlighter1_333_627_Open_Text.style.display='none'; Codehighlighter1_333_627_Closed_Image.style.display='inline'; Codehighlighter1_333_627_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_333_627_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_333_627_Closed_Text.style.display='none'; Codehighlighter1_333_627_Open_Image.style.display='inline'; Codehighlighter1_333_627_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_333_627_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" />
				</span>
				<span id="Codehighlighter1_333_627_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary()<br /><img id="Codehighlighter1_363_430_Open_Image" onclick="this.style.display='none'; Codehighlighter1_363_430_Open_Text.style.display='none'; Codehighlighter1_363_430_Closed_Image.style.display='inline'; Codehighlighter1_363_430_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_363_430_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_363_430_Closed_Text.style.display='none'; Codehighlighter1_363_430_Open_Image.style.display='inline'; Codehighlighter1_363_430_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_363_430_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" />
						</span>
						<span id="Codehighlighter1_363_430_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">对对象创建/访问的SOAP封装<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">发送SOAP数据<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">如果有返回值，就对SOAP分析，得到C#数据</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report()<br /><img id="Codehighlighter1_457_524_Open_Image" onclick="this.style.display='none'; Codehighlighter1_457_524_Open_Text.style.display='none'; Codehighlighter1_457_524_Closed_Image.style.display='inline'; Codehighlighter1_457_524_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_457_524_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_457_524_Closed_Text.style.display='none'; Codehighlighter1_457_524_Open_Image.style.display='inline'; Codehighlighter1_457_524_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_457_524_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" />
						</span>
						<span id="Codehighlighter1_457_524_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">对对象创建/访问的SOAP封装<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">发送SOAP数据<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">如果有返回值，就对SOAP分析，得到C#数据</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation()<br /><img id="Codehighlighter1_558_625_Open_Image" onclick="this.style.display='none'; Codehighlighter1_558_625_Open_Text.style.display='none'; Codehighlighter1_558_625_Closed_Image.style.display='inline'; Codehighlighter1_558_625_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_558_625_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_558_625_Closed_Text.style.display='none'; Codehighlighter1_558_625_Open_Image.style.display='inline'; Codehighlighter1_558_625_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_558_625_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" />
						</span>
						<span id="Codehighlighter1_558_625_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">对对象创建/访问的SOAP封装<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">发送SOAP数据<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">如果有返回值，就对SOAP分析，得到C#数据</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> HrSys<br /><img id="Codehighlighter1_641_770_Open_Image" onclick="this.style.display='none'; Codehighlighter1_641_770_Open_Text.style.display='none'; Codehighlighter1_641_770_Closed_Image.style.display='inline'; Codehighlighter1_641_770_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_641_770_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_641_770_Closed_Text.style.display='none'; Codehighlighter1_641_770_Open_Image.style.display='inline'; Codehighlighter1_641_770_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_641_770_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" />
				</span>
				<span id="Codehighlighter1_641_770_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ProcessEmployee(IEmployee employeeProxy)<br /><img id="Codehighlighter1_698_768_Open_Image" onclick="this.style.display='none'; Codehighlighter1_698_768_Open_Text.style.display='none'; Codehighlighter1_698_768_Closed_Image.style.display='inline'; Codehighlighter1_698_768_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_698_768_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_698_768_Closed_Text.style.display='none'; Codehighlighter1_698_768_Open_Image.style.display='inline'; Codehighlighter1_698_768_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_698_768_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" />
						</span>
						<span id="Codehighlighter1_698_768_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employeeProxy.Report();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employeeProxy.ApplyVacation();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">使用的要点：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">1</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">、“增加一层间接层”，是软件系统中常用的手段之一。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">2</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">、具体的实现中，</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">有很大差别，有的是简单的“</span>
				<span lang="EN-US">copy-on-write</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">”，有的是对组件模块的抽象代理。在</span>
				<span lang="EN-US">JAVA</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中常见的</span>
				<span lang="EN-US">SSH</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">架构模式中（</span>
				<span lang="EN-US">struts+spring+hibernate</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">）中，我们可以把</span>
				<span lang="EN-US">spring</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">所在的服务层看成对</span>
				<span lang="EN-US">hiberate</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的代理。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">具体的实现可以参考</span>
				<span lang="EN-US">.NET</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中的</span>
				<span lang="EN-US">WebService</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的实现。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">Copy-on-write</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">技术<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" />
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> App<br /><img id="Codehighlighter1_10_256_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_256_Open_Text.style.display='none'; Codehighlighter1_10_256_Closed_Image.style.display='inline'; Codehighlighter1_10_256_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_10_256_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_256_Closed_Text.style.display='none'; Codehighlighter1_10_256_Open_Image.style.display='inline'; Codehighlighter1_10_256_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_10_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" />
				</span>
				<span id="Codehighlighter1_10_256_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </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" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> s1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">; </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" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> s2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">; </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">不可在修改<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">s1.ToUpper(); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">s1不会产生任何改变</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    stringBulider sb1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> stringBulider(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    stringBulider sb2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> stringBulider(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    sb1.replace(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">H</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">L</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">可以修改成功</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />
						</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">sb1.replace("H","L");</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">系统做的动作是，</span>
				<span lang="EN-US">sb1</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的代理对象先拷贝</span>
				<span lang="EN-US">”Hello”</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">字符串，然后用“</span>
				<span lang="EN-US">L</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">”替换“</span>
				<span lang="EN-US">H</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">”，</span>
				<span lang="EN-US">sb1</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的代理对象重新指向新的对象。</span>
		</p>
<img src ="http://www.blogjava.net/sodmewuhan/aggbug/43653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-27 20:33 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate的数据库事务管理</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/22/42505.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Sat, 22 Apr 2006 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/22/42505.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/42505.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/22/42505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/42505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/42505.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">一、<span style="FONT: 7pt 'Times New Roman'">           </span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库事务概念</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库事务的特征：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">ACID<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Atomic</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">（原子性）、</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Consistency</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">（一致性）、</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Isolation</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">（隔离性）和</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Durability</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">（持久性）。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">DBMS</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">用日志来保证数据的原子性、一致性和持久性；用锁的机制来保证数据的隔离性。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
								<span style="mso-list: Ignore">二、<span style="FONT: 7pt 'Times New Roman'">           </span></span>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">事务的边界</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库支持</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">种事务模式：自动提交和手动提交。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">JDBC API</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的事务边界</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" />
				<span style="COLOR: #0000ff">try</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_4_248_Open_Image" onclick="this.style.display='none'; Codehighlighter1_4_248_Open_Text.style.display='none'; Codehighlighter1_4_248_Closed_Image.style.display='inline'; Codehighlighter1_4_248_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_4_248_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_4_248_Closed_Text.style.display='none'; Codehighlighter1_4_248_Open_Image.style.display='inline'; Codehighlighter1_4_248_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_4_248_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" />
				</span>
				<span id="Codehighlighter1_4_248_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Connection conn </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> java.sql.DriverManager,.getConnection(dbUrl,dbUser,dbPwd);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    conn.setAutoCommit(</span>
						<span style="COLOR: #0000ff">false</span>
						<span style="COLOR: #000000">); </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" />
						</span>
						<span style="COLOR: #000000">    stmt </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> conn.createStatement();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    stmt.executeUpdate(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/dot.gif" />.</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">数据库更新1</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    stmt.executeUpdate(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/dot.gif" />.</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">数据库更新2</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    conn.commit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">catch</span>
				<span style="COLOR: #000000">(Exception e)<br /><img id="Codehighlighter1_269_289_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_289_Open_Text.style.display='none'; Codehighlighter1_269_289_Closed_Image.style.display='inline'; Codehighlighter1_269_289_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_269_289_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_269_289_Closed_Text.style.display='none'; Codehighlighter1_269_289_Open_Image.style.display='inline'; Codehighlighter1_269_289_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_269_289_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" />
				</span>
				<span id="Codehighlighter1_269_289_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    conn.rollback();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">finally</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_299_331_Open_Image" onclick="this.style.display='none'; Codehighlighter1_299_331_Open_Text.style.display='none'; Codehighlighter1_299_331_Closed_Image.style.display='inline'; Codehighlighter1_299_331_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_299_331_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_299_331_Closed_Text.style.display='none'; Codehighlighter1_299_331_Open_Image.style.display='inline'; Codehighlighter1_299_331_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span id="Codehighlighter1_299_331_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" />
				</span>
				<span id="Codehighlighter1_299_331_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    stmt.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    conn.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<span lang="EN-US" style="FONT-SIZE: 12pt">
				<o:p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">Hibernate API</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">声明事务边界</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" />
								<span style="COLOR: #000000">Session session </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> factory.openSession();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Transaction tx;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
								<span style="COLOR: #0000ff">try</span>
								<span style="COLOR: #000000"> <br /><img id="Codehighlighter1_62_136_Open_Image" onclick="this.style.display='none'; Codehighlighter1_62_136_Open_Text.style.display='none'; Codehighlighter1_62_136_Closed_Image.style.display='inline'; Codehighlighter1_62_136_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_62_136_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_136_Closed_Text.style.display='none'; Codehighlighter1_62_136_Open_Image.style.display='inline'; Codehighlighter1_62_136_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
								<span id="Codehighlighter1_62_136_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" />
								</span>
								<span id="Codehighlighter1_62_136_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    tx </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> session.beginTransaction(); </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">开始事务<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </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" />
										</span>
										<span style="COLOR: #000000">    。。。。。<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    tx.commit();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000"> (Exception e)<br /><img id="Codehighlighter1_158_198_Open_Image" onclick="this.style.display='none'; Codehighlighter1_158_198_Open_Text.style.display='none'; Codehighlighter1_158_198_Closed_Image.style.display='inline'; Codehighlighter1_158_198_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_158_198_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_158_198_Closed_Text.style.display='none'; Codehighlighter1_158_198_Open_Image.style.display='inline'; Codehighlighter1_158_198_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
								<span id="Codehighlighter1_158_198_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" />
								</span>
								<span id="Codehighlighter1_158_198_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000"> (tx</span>
										<span style="COLOR: #000000">!=</span>
										<span style="COLOR: #0000ff">null</span>
										<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_176_196_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_196_Open_Text.style.display='none'; Codehighlighter1_176_196_Closed_Image.style.display='inline'; Codehighlighter1_176_196_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_176_196_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_176_196_Closed_Text.style.display='none'; Codehighlighter1_176_196_Open_Image.style.display='inline'; Codehighlighter1_176_196_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
										<span id="Codehighlighter1_176_196_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" />
										</span>
										<span id="Codehighlighter1_176_196_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        tx.rollback();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">finally</span>
								<span style="COLOR: #000000">
										<br />
										<img id="Codehighlighter1_208_228_Open_Image" onclick="this.style.display='none'; Codehighlighter1_208_228_Open_Text.style.display='none'; Codehighlighter1_208_228_Closed_Image.style.display='inline'; Codehighlighter1_208_228_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_208_228_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_208_228_Closed_Text.style.display='none'; Codehighlighter1_208_228_Open_Image.style.display='inline'; Codehighlighter1_208_228_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
								</span>
								<span id="Codehighlighter1_208_228_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" />
								</span>
								<span id="Codehighlighter1_208_228_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    session.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
								</span>
						</div>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">注：一个</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">session</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">可以对应多个事务，但是推荐的做法是一个</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">session</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对应一个事务。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
												<span style="mso-list: Ignore">
														<font face="Times New Roman">
																<span style="FONT: 7pt 'Times New Roman'">
																		<strong>
																				<font size="3">三、</font>
																		</strong>           </span>
														</font>
												</span>
										</span>
								</b>
								<b style="mso-bidi-font-weight: normal">
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">多事务的并发问题</span>
								</b>
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt">
												<o:p>
												</o:p>
										</span>
								</b>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">当多个事务同时访问相同的数据的时候，程序如果没有采取适当的隔离措施，就会发生数据库的并发问题。常见的并发问题有：</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第一类丢失更新：撤消事务的时候，把其他的事务已经提交的数据给覆盖了；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">脏读；读了没有提交的数据；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">虚读：一个事务读到另外一个事务已经提交的新插入的数据；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">不可重复读：一个事务读到另外一个事务已经提交的更新的数据；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第二类丢失更新：一个事务覆盖另外一个事务已经提交的更新数据。</span> <br /><strong>四、</strong><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体"><span style="mso-list: Ignore"><font face="Times New Roman"><span style="FONT: 7pt 'Times New Roman'">           </span></font></span></span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">锁</span></b><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></b></p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">一般地，大型的</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">DBMS</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">都会自动的管理锁定机制，但是在对数据的安全性、完整性和一致性有特殊要求的地方，可以由事务本身来管理琐的机制。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">有一点要关注的是：锁的粒度越大，隔离性越好，并发性越差。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">按照锁的程度来分有：</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">共享锁：用读操作，非独占的，其他事务可以读，但是不能更新，并发性好；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">独占锁：用与</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">insert update </font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">和</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">delete</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">等语句，其他事务不能读，也不能改，并发性差；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">更新锁：执行</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">update</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的时候，加锁。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">死琐：多是事务分别锁定了一个资源，又请求锁定对方已经锁定的资源，就造成了请求环。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">降低死锁的最好办法是使用短事务。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
												<span style="mso-list: Ignore">
														<font face="Times New Roman">
																<span style="FONT: 7pt 'Times New Roman'">
																		<strong>
																				<font size="3">五、</font>
																		</strong>           </span>
														</font>
												</span>
										</span>
								</b>
								<b style="mso-bidi-font-weight: normal">
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库的事务隔离级别</span>
								</b>
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt">
												<o:p>
												</o:p>
										</span>
								</b>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">数据库提供</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">4</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">种事务隔离级别：</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Serializable</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">：串行化；（隔离级别最高）</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">1<o:p></o:p></font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Repeatable Read</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">：可重复读；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">2<o:p></o:p></font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Read Commited</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">：读已提交数据；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">4<o:p></o:p></font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Read Uncommited</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">：读未提交数据；（隔离级别最低）</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">8<o:p></o:p></font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Hiberate</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中的隔离级别的设置</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Hibernate</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的配置文件中</span>
								<span style="FONT-SIZE: 12pt">
										<font face="Times New Roman">
												<span lang="EN-US">hibernate.connection.isolation=2<o:p></o:p></span>
										</font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
												<span style="mso-list: Ignore">
														<font face="Times New Roman">
																<span style="FONT: 7pt 'Times New Roman'">
																		<strong>
																				<font size="3">六、</font>
																		</strong>           </span>
														</font>
												</span>
										</span>
								</b>
								<b style="mso-bidi-font-weight: normal">
										<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">悲观锁和乐观琐</span>
								</b>
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt">
												<o:p>
												</o:p>
										</span>
								</b>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">从应用程序的角度来看，锁分为悲观锁和乐观锁。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">悲观锁：显示的为程序加锁，但是降低并发性。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Select ……. For update;<o:p></o:p></font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Hibernate</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中的代码</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Session.get(Account.class,net Long(1),LockMode.UPGRADE)</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">//</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">程序采用悲观锁</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">乐观锁：依靠</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">DBMS</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来管理锁，程序依靠版本控制来避免并发问题。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在对象</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">-</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">关系映射的文件中，用</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">&lt;version&gt;</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">或者</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">&lt;timestamp&gt;</font>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">可以管理并发。乐观琐比悲观琐有更好的并发性，优先考虑乐观琐。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman"> <o:p></o:p></font>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						</p>
				</o:p>
		</span>
		<span lang="EN-US" style="FONT-SIZE: 12pt">
				<o:p>
				</o:p>
		</span>
<img src ="http://www.blogjava.net/sodmewuhan/aggbug/42505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-22 17:12 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/22/42505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转贴]有效编写软件的75条建议</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Sat, 15 Apr 2006 12:38:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/41264.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/41264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/41264.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1. 				你们的项目组使用源代码管理工具了么？										    				应该用。				VSS				、				CVS				、				PVCS				、				ClearCase				、				CCC/Harvest				、				FireFly				都可以。我的选择是				VSS				。				...&nbsp;&nbsp;<a href='http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html'>阅读全文</a><img src ="http://www.blogjava.net/sodmewuhan/aggbug/41264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-15 20:38 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA程序员必须看的书The Java Language Specification</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40731.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Wed, 12 Apr 2006 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40731.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/40731.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40731.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/40731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/40731.html</trackback:ping><description><![CDATA[在JAVA的老巢找到的这本书，不用多说了，这本书就是JAVA权威了，SUN提供了PDF下载和在线浏览：<a href="http://java.sun.com/docs/books/jls/">http://java.sun.com/docs/books/jls/</a><img src ="http://www.blogjava.net/sodmewuhan/aggbug/40731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-12 21:07 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>讨人喜欢的26个原则，让你的人际关系更上一层楼（转）</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40729.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Wed, 12 Apr 2006 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40729.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/40729.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/40729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/40729.html</trackback:ping><description><![CDATA[1.长相不令人讨厌，如果长得不好，就让自己有才气；如果才气也没有，那就总是微笑。<br /> 　　<br /> 　　2.气质是关键。如果时尚学不好，宁愿纯朴。<br /> 　　<br /> 　　3.与人握手时，可多握一会儿。真诚是宝。<br /> 　　<br /> 　　4.不必什么都用“我”做主语。<br /> 　　<br /> 　　5.不要向朋友借钱。<br /> 　　<br /> 　　6.不要“逼”客人看你的家庭相册。<br /> 　　<br /> 　　7.与人打“的”时，请抢先坐在司机旁。<br /> 　　<br /> 　　8.坚持在背后说别人好话，别担心这好话传不到当事人耳朵里。<br /> 　　<br /> 　　9.有人在你面前说某人坏话时，你只微笑。<br /> 　　<br /> 　　10.自己开小车，不要特地停下来和一个骑自行车的同事打招呼。人家会以为你在炫耀。<br /> 　　<br /> 　　11.同事生病时，去探望他。很自然地坐在他病床上，回家再认真洗手。<br /> 　　<br /> 　　12.不要把过去的事全让人知道。<br /> 　　<br /> 　　13.尊重不喜欢你的人。<br /> 　　<br /> 　　14.对事不对人；或对事无情，对人要有情；或做人第一，做事其次。<br /> 　　<br /> 　　15.自我批评总能让人相信，自我表扬则不然。<br /> 　　<br /> 　　16.没有什么东西比围观者们更能提高你的保龄球的成绩了。所以，平常不要吝惜你的喝彩声。<br /> 　　<br /> 　　17.不要把别人的好，视为理所当然。要知道感恩。<br /> 　　<br /> 　　18.榕树上的“八哥”在讲，只讲不听，结果乱成一团。学会聆听。<br /> 　　<br /> 　　19.尊重传达室里的师傅及搞卫生的阿姨。<br /> 　　<br /> 　　20.说话的时候记得常用“我们”开头。<br /> 　　<br /> 　　21.为每一位上台唱歌的人鼓掌。<br /> 　　<br /> 　　22.有时要明知故问：你的钻戒很贵吧！有时，即使想问也不能问，比如：你多大了？<br /> 　　<br /> 　　23.话多必失，人多的场合少说话。<br /> 　　<br /> 　　24.把未出口的“不”改成：“这需要时间”、“我尽力”、“我不确定”、“当我决定后，会给你打电话”……<br /> 　　<br /> 　　25.不要期望所有人都喜欢你，那是不可能的，让大多数人喜欢就是成功的表现。<br /> 　　<br /> 　　26.当然，自己要喜欢自己。 　　<br /> 　　<br /> 　　ps:27.如果你在表演或者是讲演的时候，如果只要有一个人在听也要用心的继续下去，即使没有人喝采也要演，因为这是你成功的道路，是你成功的摇篮，你不要看的人成功，而是要你成功。<br /> 　　<br /> 　　28.如果你看到一个贴子还值得一看的话，那么你一定要回复，因为你的回复会给人继续前进的勇气，会给人很大的激励，同时也会让人感激你!<img src ="http://www.blogjava.net/sodmewuhan/aggbug/40729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-12 20:58 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/12/40729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate的检索策略</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/10/40320.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Mon, 10 Apr 2006 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/10/40320.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/40320.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/10/40320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/40320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/40320.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Hibernate</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">3</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">种检索策略：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
						<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">延迟检索；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
						<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">立即检索；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
						<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">迫切左外连接；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Hibernate</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">2</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">种方式来确定检索策略，一中是在配置文件当中，另外一种是在程序种设置。当然，如果你在程序中设置了检索策略，那么你在配置文件中的设置也就无效了。另外的一种情况是</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">HQL</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会忽略配置文件的设置，而总是采用迫切左外连接。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo2; tab-stops: list 24.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
						<span style="mso-list: Ignore">一、</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类级别的检索</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以选择的检索策略是立即检索和延迟检索，默认的是立即检索。用配置文件中的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">&lt;class&gt;</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">节点的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">lazy</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来控制。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意：不管你在配置</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">class</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">lazy</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">true</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">还是</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">false</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，对</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">get()</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">create</span>
				<tt>
						<span lang="EN-US" style="FONT-SIZE: 9pt">Criteria</span>
				</tt>
				<span lang="EN-US" style="FONT-SIZE: 12pt">()</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法都不起作用，只有对</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">load()</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法起作用。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当你使用的检索策略是</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">lazy</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候，当你执行</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Customer customer = (Customer)session.load(Customer.class,new Long(1));<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候，</span>
				<span style="FONT-SIZE: 12pt">
						<span lang="EN-US">Hibernate</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不从数据库检索数据，而只是产生一个代理类，只有当你执行</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Customer.getName();<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Hibernate</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">才到数据库取数据。所以，如下的代码是会被抛出异常的：</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" />
				<span style="COLOR: #000000">Session session </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> sessionFactory.openSession();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />transaction tx </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />tx </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> session.beginTransaction();<br />  Customer customer </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> (Customer)session.load(Customer.</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Long(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />tx.commit();<br />  session.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />customer.getName();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
		</div>
		<span lang="EN-US" style="FONT-SIZE: 12pt">
				<o:p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">get()</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法总是用的立即检索，如果和它相关联的类也是用的立即检索，那么也会把相关联的数据也检索出来。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">二、</span>
								</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一对和多对多关联检索</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一般地，为了有减少对数据库的访问，我们往往用延迟检索的策略。所以，我们优先使用如下方式；</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">&lt;set class=”order” inverse=”true’ lazy=”true” &gt;<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是，我们在检索“多”的一方的时候，</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">Hibernate</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能为我们产生代理类。由此，我们就要用</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">betch-size</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配置来减少</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">SQL</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当我们使用</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">outer-join</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性的时候，我们就没有必要使用</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">lazy</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性了。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">Outer-join</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会一次将“一”方和与之相关的“多”方用左外连接的方式检索出来。</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 66pt; mso-char-indent-count: 5.5">
								<span lang="EN-US" style="FONT-SIZE: 12pt">Session session = sessionFactory.openSession();<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 2">              </span>
										<span style="mso-spacerun: yes">       </span>Transaction tx = null;<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 2">              </span>
										<span style="mso-spacerun: yes">       </span>tx = session.beginTransaction();<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 2">              </span>
										<span style="mso-spacerun: yes">      </span>Customer customer = (Customer)session.get(Customer.class,new Long(1));<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生的</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">SQL</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句如下：</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
								<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">Hibernate: select customer0_.ID as ID1_, customer0_.NAME as NAME2_1_, orders1_.CUSTOMER_ID as CUSTOMER3_3_, orders1_.ID as ID3_, orders1_.ID as ID0_, orders1_.ORDER_NUMBER as ORDER2_1_0_, orders1_.CUSTOMER_ID as CUSTOMER3_1_0_ from sampledb.customers customer0_ left outer join sampledb.orders orders1_ on customer0_.ID=orders1_.CUSTOMER_ID where customer0_.ID=?</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
						</p>
				</o:p>
		</span>
<img src ="http://www.blogjava.net/sodmewuhan/aggbug/40320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-10 20:44 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/10/40320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA的初始化和清理</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/09/40103.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Sun, 09 Apr 2006 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/09/40103.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/40103.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/09/40103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/40103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/40103.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本文是《</span>
				<span lang="EN-US">JAVA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编程思想》第四章的读书笔记</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<span lang="EN-US" style="mso-bidi-font-family: 宋体">
						<span style="mso-list: Ignore">一、</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用构造函数初始化</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; mso-list: l1 level2 lfo2; tab-stops: list 36.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1．1、<span style="FONT: 7pt 'Times New Roman'">   </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数的签名和返回值</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函数可以通过不同的函数签名来进行重载。构造函数没有返回值，这和返回值为</span>
				<span lang="EN-US">void</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的是不同的</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; mso-list: l1 level2 lfo2; tab-stops: list 36.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1．2、<span style="FONT: 7pt 'Times New Roman'">   </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函数的重载</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何区分构造函数的不同呢，用不同的函数签名。函数签名的顺序不同都可以，但是这样的编程风格是不好的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数的签名会上升转型（当没有合适的函数签名出现的时候），但是不会窄化转型，你必须要显示的进行强制类型转换。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能以</span>
				<span lang="EN-US">return value </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的不同作为重载的标准。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当程序提供了构造函数以后，系统就不在提供默认的构造函数了。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">This</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键字指的是当前对象，有了</span>
				<span lang="EN-US">this</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后，可以在构造函数中以如下的方式调用</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 id="Codehighlighter1_8_97_Open_Image" onclick="this.style.display='none'; Codehighlighter1_8_97_Open_Text.style.display='none'; Codehighlighter1_8_97_Closed_Image.style.display='inline'; Codehighlighter1_8_97_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_8_97_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_97_Closed_Text.style.display='none'; Codehighlighter1_8_97_Open_Image.style.display='inline'; Codehighlighter1_8_97_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000">Class A </span>
				<span id="Codehighlighter1_8_97_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" />
				</span>
				<span id="Codehighlighter1_8_97_Open_Text">
						<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_16_18_Open_Image" onclick="this.style.display='none'; Codehighlighter1_16_18_Open_Text.style.display='none'; Codehighlighter1_16_18_Closed_Image.style.display='inline'; Codehighlighter1_16_18_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_16_18_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_16_18_Closed_Text.style.display='none'; Codehighlighter1_16_18_Open_Image.style.display='inline'; Codehighlighter1_16_18_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    A () </span>
						<span id="Codehighlighter1_16_18_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" />
						</span>
						<span id="Codehighlighter1_16_18_Open_Text">
								<span style="COLOR: #000000">{…}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_37_40_Open_Image" onclick="this.style.display='none'; Codehighlighter1_37_40_Open_Text.style.display='none'; Codehighlighter1_37_40_Closed_Image.style.display='inline'; Codehighlighter1_37_40_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_37_40_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_37_40_Closed_Text.style.display='none'; Codehighlighter1_37_40_Open_Image.style.display='inline'; Codehighlighter1_37_40_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    A(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> a,</span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000"> b) </span>
						<span id="Codehighlighter1_37_40_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" />
						</span>
						<span id="Codehighlighter1_37_40_Open_Text">
								<span style="COLOR: #000000">{… }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_67_95_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_95_Open_Text.style.display='none'; Codehighlighter1_67_95_Closed_Image.style.display='inline'; Codehighlighter1_67_95_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_67_95_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_95_Closed_Text.style.display='none'; Codehighlighter1_67_95_Open_Image.style.display='inline'; Codehighlighter1_67_95_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    A(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> a,</span>
						<span style="COLOR: #0000ff">char</span>
						<span style="COLOR: #000000"> b,</span>
						<span style="COLOR: #0000ff">float</span>
						<span style="COLOR: #000000"> c) </span>
						<span id="Codehighlighter1_67_95_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" />
						</span>
						<span id="Codehighlighter1_67_95_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        This(a,b); </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">注意：只能调用一次</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; mso-list: l1 level2 lfo2; tab-stops: list 36.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1．3、<span style="FONT: 7pt 'Times New Roman'">   </span></span>
				</span>
				<span lang="EN-US">Static</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的含义</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你无法在</span>
				<span lang="EN-US">static</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中调用</span>
				<span lang="EN-US">non-static</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，但是你可以在</span>
				<span lang="EN-US">non-static</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中调用</span>
				<span lang="EN-US">static</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<span lang="EN-US" style="mso-bidi-font-family: 宋体">
						<span style="mso-list: Ignore">二、</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类的清理</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">JAVA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的垃圾回收机制只能回收</span>
				<span lang="EN-US">new</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">出来的对象，但是你的对象不是</span>
				<span lang="EN-US">new</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">出来的而获得的“特殊”内存，那么</span>
				<span lang="EN-US">JAVA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的垃圾回收就不能处理，这样就必须用</span>
				<span lang="EN-US">finalize()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数来释放你的“特殊”内存。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">JAVA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的清理方式是先调用你的</span>
				<span lang="EN-US">finalize()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，然后在下次垃圾回收的时候来清理你的“特殊”内存。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键的三句话：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">垃圾回收不等于析构；</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你的对象可能不被回收；</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">垃圾回收动作只回收内存。</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用</span>
				<span lang="EN-US">System.gc()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以用来强迫终结动作的发生</span>
		</p>
<img src ="http://www.blogjava.net/sodmewuhan/aggbug/40103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-09 16:17 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/09/40103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>