﻿<?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/hxweb/</link><description>JSP、JAVA、struts、hibernate、spring、eclipse、工作流、电子政务、协同办公、J2ME</description><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 11:13:01 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 11:13:01 GMT</pubDate><ttl>60</ttl><item><title>  用JDBC和HIBERNATE写入ORACLE的blog字段</title><link>http://www.blogjava.net/hxweb/archive/2007/06/13/123813.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:02:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/archive/2007/06/13/123813.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123813.html</wfw:comment><comments>http://www.blogjava.net/hxweb/archive/2007/06/13/123813.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123813.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123813.html</trackback:ping><description><![CDATA[
		<p>Oracle的Blob字段比较特殊，他比long字段的性能要好很多，可以用来保存例如图片之类的二进制数据。</p>
		<p>写入Blob字段和写入其它类型字段的方式非常不同，因为Blob自身有一个cursor，你必须使用cursor对blob进行操作，因而你在写入Blob之前，必须获得cursor才能进行写入，那么如何获得Blob的cursor呢？</p>
		<p>这需要你先插入一个empty的blob，这将创建一个blob的cursor，然后你再把这个empty的blob的cursor用select查询出来，这样通过两步操作，你就获得了blob的cursor，可以真正的写入blob数据了。</p>
		<p>看下面的JDBC的demo，把oraclejdbc.jar这个二进制文件写入数据库表javatest的content字段(这是一个blob型字段)</p>
		<p>
		</p>
		<div class="code_title">代码</div>
		<div class="code_div">
				<div class="dp-highlighter">
						<div class="bar">
						</div>
						<ol class="dp-j">
								<li class="alt">
										<span>
												<span class="keyword">import</span>
												<span> java.sql.*;   </span>
										</span>
								</li>
								<li class="">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> java.io.*;   </span>
								</li>
								<li class="alt">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> oracle.sql.*;   </span>
								</li>
								<li class="">
										<span>
										</span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">class</span>
										<span> WriteBlob {   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">static</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> main(String[] args) {   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>    </span>
										<span class="keyword">try</span>
										<span> {   </span>
								</li>
								<li class="alt">
										<span>      DriverManager.registerDriver(</span>
										<span class="keyword">new</span>
										<span> oracle.jdbc.driver.OracleDriver());   </span>
								</li>
								<li class="">
										<span>      Connection conn = DriverManager.getConnection(</span>
										<span class="string">"jdbc:oracle:thin:@localhost:1521:orcl"</span>
										<span>,</span>
										<span class="string">"fankai"</span>
										<span>,</span>
										<span class="string">"fankai"</span>
										<span>);   </span>
								</li>
								<li class="alt">
										<span>      conn.setAutoCommit(</span>
										<span class="keyword">false</span>
										<span>);   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>      BLOB blob = </span>
										<span class="keyword">null</span>
										<span>;   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>      PreparedStatement pstmt = conn.prepareStatement(</span>
										<span class="string">"insert into javatest(name,content) values(?,empty_blob())"</span>
										<span>);   </span>
								</li>
								<li class="">
										<span>      pstmt.setString(</span>
										<span class="number">1</span>
										<span>,</span>
										<span class="string">"fankai"</span>
										<span>);   </span>
								</li>
								<li class="alt">
										<span>      pstmt.executeUpdate();   </span>
								</li>
								<li class="">
										<span>      pstmt.close();   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>      pstmt = conn.prepareStatement(</span>
										<span class="string">"select content from javatest where name= ? for update"</span>
										<span>);   </span>
								</li>
								<li class="alt">
										<span>      pstmt.setString(</span>
										<span class="number">1</span>
										<span>,</span>
										<span class="string">"fankai"</span>
										<span>);   </span>
								</li>
								<li class="">
										<span>      ResultSet rset = pstmt.executeQuery();   </span>
								</li>
								<li class="alt">
										<span>      </span>
										<span class="keyword">if</span>
										<span> (rset.next()) blob = (BLOB) rset.getBlob(</span>
										<span class="number">1</span>
										<span>);   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>      String fileName = </span>
										<span class="string">"oraclejdbc.jar"</span>
										<span>;   </span>
								</li>
								<li class="">
										<span>      File f = </span>
										<span class="keyword">new</span>
										<span> File(fileName);   </span>
								</li>
								<li class="alt">
										<span>      FileInputStream fin = </span>
										<span class="keyword">new</span>
										<span> FileInputStream(f);   </span>
								</li>
								<li class="">
										<span>      System.out.println(</span>
										<span class="string">"file size = "</span>
										<span> + fin.available());   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>      pstmt = conn.prepareStatement(</span>
										<span class="string">"update javatest set content=? where name=?"</span>
										<span>);   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>      OutputStream out = blob.getBinaryOutputStream();   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>      </span>
										<span class="keyword">int</span>
										<span> count = -</span>
										<span class="number">1</span>
										<span>, total = </span>
										<span class="number">0</span>
										<span>;   </span>
								</li>
								<li class="alt">
										<span>      </span>
										<span class="keyword">byte</span>
										<span>[] data = </span>
										<span class="keyword">new</span>
										<span> </span>
										<span class="keyword">byte</span>
										<span>[(</span>
										<span class="keyword">int</span>
										<span>)fin.available()];   </span>
								</li>
								<li class="">
										<span>      fin.read(data);   </span>
								</li>
								<li class="alt">
										<span>      out.write(data);   </span>
								</li>
								<li class="">
										<span>      </span>
										<span class="comment">/* </span> </li>
								<li class="alt">
										<span>
												<span class="comment">      byte[] data = new byte[blob.getBufferSize()];  另一种实现方法,节省内存 </span> </span>
								</li>
								<li class="">
										<span>
												<span class="comment">      while ((count = fin.read(data)) != -1) { </span> </span>
								</li>
								<li class="alt">
										<span>
												<span class="comment">        total += count; </span> </span>
								</li>
								<li class="">
										<span>
												<span class="comment">        out.write(data, 0, count); </span> </span>
								</li>
								<li class="alt">
										<span>
												<span class="comment">      } </span> </span>
								</li>
								<li class="">
										<span>
												<span class="comment">      */</span>
												<span>  </span>
										</span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>      fin.close();   </span>
								</li>
								<li class="alt">
										<span>      out.close();   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>      pstmt.setBlob(</span>
										<span class="number">1</span>
										<span>,blob);   </span>
								</li>
								<li class="">
										<span>      pstmt.setString(</span>
										<span class="number">2</span>
										<span>,</span>
										<span class="string">"fankai"</span>
										<span>);   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>      pstmt.executeUpdate();   </span>
								</li>
								<li class="alt">
										<span>      pstmt.close();   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>      conn.commit();   </span>
								</li>
								<li class="">
										<span>      conn.close();   </span>
								</li>
								<li class="alt">
										<span>    } </span>
										<span class="keyword">catch</span>
										<span> (SQLException e) {   </span>
								</li>
								<li class="">
										<span>      System.err.println(e.getMessage());   </span>
								</li>
								<li class="alt">
										<span>      e.printStackTrace();   </span>
								</li>
								<li class="">
										<span>    } </span>
										<span class="keyword">catch</span>
										<span> (IOException e) {   </span>
								</li>
								<li class="alt">
										<span>      System.err.println(e.getMessage());   </span>
								</li>
								<li class="">
										<span>    }   </span>
								</li>
								<li class="alt">
										<span>  }   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>}  </span>
								</li>
						</ol>
				</div>
		</div>
		<script><![CDATA[ender_code();]]&gt;</script>
		<p>
		</p>
		<p>仔细看上例，分三步：</p>
		<p>1、插入空blob <br />into javatest(name,content) values(?,empty_blob());</p>
		<p>2、获得blob的cursor <br />select content from javatest where name= ? for update;</p>
		<p>注意！！！必须加for update，这将锁定该行，直至该行被修改完毕，保证不产生并发冲突。</p>
		<p>3、update javatest set content=? where name=</p>
		<p>用cursor往数据库写数据</p>
		<p>这里面还有一点要提醒大家：</p>
		<p>JDK1.3带的JDBC2.0规范是不完善的，只有读Blob的接口，而没有写Blob的接口，JDK1.4带的JDBC3.0加入了写Blob的接口。你可以使用JDBC3.0的接口，也可以直接使用Oracle的JDBC的API，我在上例中使用了Oracle的JDBC的API。</p>
		<p>另外要注意的是：</p>
		<p>java.sql.Blob <br />oracle.sql.BLOB</p>
		<p>注意看blob的大小写，是不一样的。写程序的时候不要搞混了。</p>
		<p>下面看看用Hibernate怎么写，原理是一样的，也要分三步，但是代码简单很多</p>
		<p>这是Cat对象定义 <br /></p>
		<div class="code_title">代码</div>
		<div class="code_div">
				<div class="dp-highlighter">
						<div class="bar">
						</div>
						<ol class="dp-j">
								<li class="alt">
										<span>
												<span class="keyword">package</span>
												<span> com.fankai;   </span>
										</span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> java.sql.Blob;   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>
										</span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">class</span>
										<span> Cat {   </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">private</span>
										<span> String id;   </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">private</span>
										<span> String name;   </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">private</span>
										<span> </span>
										<span class="keyword">char</span>
										<span> sex;   </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">private</span>
										<span> </span>
										<span class="keyword">float</span>
										<span> weight;   </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">private</span>
										<span> Blob image;   </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> Cat() { }   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> String getId() { </span>
										<span class="keyword">return</span>
										<span> id; }   </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> setId(String id) { </span>
										<span class="keyword">this</span>
										<span>.id = id; }   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">public</span>
										<span> String getName() { </span>
										<span class="keyword">return</span>
										<span> name; }   </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> setName(String name) { </span>
										<span class="keyword">this</span>
										<span>.name = name; }   </span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">char</span>
										<span> getSex() { </span>
										<span class="keyword">return</span>
										<span> sex; }   </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> setSex(</span>
										<span class="keyword">char</span>
										<span> sex) { </span>
										<span class="keyword">this</span>
										<span>.sex = sex; }   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">float</span>
										<span> getWeight() { </span>
										<span class="keyword">return</span>
										<span> weight; }   </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> setWeight(</span>
										<span class="keyword">float</span>
										<span> weight) { </span>
										<span class="keyword">this</span>
										<span>.weight = weight; }   </span>
								</li>
								<li class="">
										<span>     </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> Blob getImage() { </span>
										<span class="keyword">return</span>
										<span> image; }   </span>
								</li>
								<li class="">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> setImage(Blob image) { </span>
										<span class="keyword">this</span>
										<span>.image = image;}   </span>
								</li>
								<li class="alt">
										<span>}  </span>
								</li>
						</ol>
				</div>
		</div>
		<script><![CDATA[ender_code();]]&gt;</script>
		<p>
		</p>
		<p>这是Cat.hbm.xml</p>
		<p>
		</p>
		<div class="code_title">代码</div>
		<div class="code_div">
				<div class="dp-highlighter">
						<div class="bar">
						</div>
						<ol class="dp-xml">
								<li class="alt">
										<span>
												<span class="tag">&lt;?</span>
												<span class="tag-name">xml</span>
												<span> </span>
												<span class="attribute">version</span>
												<span>=</span>
												<span class="attribute-value">"1.0"</span>
												<span class="tag">?&gt;</span>
												<span>  </span>
										</span>
								</li>
								<li class="">
										<span>&lt;!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>
										</span>
										<span class="tag">&lt;</span>
										<span class="tag-name">hibernate-mapping</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>    </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">class</span>
										<span> </span>
										<span class="attribute">name</span>
										<span>=</span>
										<span class="attribute-value">"com.fankai.Cat"</span>
										<span> </span>
										<span class="attribute">table</span>
										<span>=</span>
										<span class="attribute-value">"cat"</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
								<li class="">
										<span>        </span>
										<span class="comments">&lt;!--jcs-cache usage="read-only"/--&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>        </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">id</span>
										<span> </span>
										<span class="attribute">name</span>
										<span>=</span>
										<span class="attribute-value">"id"</span>
										<span> </span>
										<span class="attribute">unsaved-value</span>
										<span>=</span>
										<span class="attribute-value">"null"</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
								<li class="">
										<span>            </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">generator</span>
										<span> </span>
										<span class="attribute">class</span>
										<span>=</span>
										<span class="attribute-value">"uuid.hex"</span>
										<span class="tag">/&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>        </span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">id</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
								<li class="">
										<span>        </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">property</span>
										<span> </span>
										<span class="attribute">name</span>
										<span>=</span>
										<span class="attribute-value">"name"</span>
										<span> </span>
										<span class="attribute">length</span>
										<span>=</span>
										<span class="attribute-value">"16"</span>
										<span> </span>
										<span class="attribute">not-null</span>
										<span>=</span>
										<span class="attribute-value">"true"</span>
										<span class="tag">/&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>        </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">property</span>
										<span> </span>
										<span class="attribute">name</span>
										<span>=</span>
										<span class="attribute-value">"sex"</span>
										<span> </span>
										<span class="attribute">length</span>
										<span>=</span>
										<span class="attribute-value">"1"</span>
										<span> </span>
										<span class="attribute">not-null</span>
										<span>=</span>
										<span class="attribute-value">"true"</span>
										<span class="tag">/&gt;</span>
										<span>  </span>
								</li>
								<li class="">
										<span>        </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">property</span>
										<span> </span>
										<span class="attribute">name</span>
										<span>=</span>
										<span class="attribute-value">"weight"</span>
										<span> </span>
										<span class="tag">/&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>        </span>
										<span class="tag">&lt;</span>
										<span class="tag-name">property</span>
										<span> </span>
										<span class="attribute">name</span>
										<span>=</span>
										<span class="attribute-value">"image"</span>
										<span> </span>
										<span class="tag">/&gt;</span>
										<span>  </span>
								</li>
								<li class="">
										<span>    </span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">class</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
								<li class="alt">
										<span>
										</span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">hibernate-mapping</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</li>
						</ol>
				</div>
		</div>
		<script><![CDATA[ender_code();]]&gt;</script>
		<p>
		</p>
		<p>下面是完整的用Hibernate写入Blob的例子，相比JDBC，已经简单轻松多了，也不用写那些Oracle特殊的sql了：</p>
		<p>
		</p>
		<div class="code_title">代码</div>
		<div class="code_div">
				<div class="dp-highlighter">
						<div class="bar">
						</div>
						<ol class="dp-j">
								<li class="alt">
										<span>
												<span class="keyword">package</span>
												<span> com.fankai;   </span>
										</span>
								</li>
								<li class="">
										<span>  </span>
								</li>
								<li class="alt">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> java.sql.Blob;   </span>
								</li>
								<li class="">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> net.sf.hibernate.*;   </span>
								</li>
								<li class="alt">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> oracle.sql.*;   </span>
								</li>
								<li class="">
										<span>
										</span>
										<span class="keyword">import</span>
										<span> java.io.*;   </span>
								</li>
								<li class="alt">
										<span>  </span>
								</li>
								<li class="">
										<span>
										</span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">class</span>
										<span> TestCatHibernate {     </span>
								</li>
								<li class="alt">
										<span>  </span>
										<span class="keyword">public</span>
										<span> </span>
										<span class="keyword">static</span>
										<span> </span>
										<span class="keyword">void</span>
										<span> testBlob() {   </span>
								</li>
								<li class="">
										<span>    Session s = </span>
										<span class="keyword">null</span>
										<span>;       </span>
								</li>
								<li class="alt">
										<span>    </span>
										<span class="keyword">byte</span>
										<span>[] buffer = </span>
										<span class="keyword">new</span>
										<span> </span>
										<span class="keyword">byte</span>
										<span>[</span>
										<span class="number">1</span>
										<span>];   </span>
								</li>
								<li class="">
										<span>    buffer[</span>
										<span class="number">0</span>
										<span>] = </span>
										<span class="number">1</span>
										<span>;   </span>
								</li>
								<li class="alt">
										<span>    </span>
										<span class="keyword">try</span>
										<span> {   </span>
								</li>
								<li class="">
										<span>      SessionFactory sf = HibernateSessionFactory.getSessionFactory();   </span>
								</li>
								<li class="alt">
										<span>      s = sf.openSession();     </span>
								</li>
								<li class="">
										<span>      Transaction tx = s.beginTransaction();   </span>
								</li>
								<li class="alt">
										<span>      Cat c = </span>
										<span class="keyword">new</span>
										<span> Cat();   </span>
								</li>
								<li class="">
										<span>      c.setName(</span>
										<span class="string">"Robbin"</span>
										<span>);   </span>
								</li>
								<li class="alt">
										<span>      c.setImage(Hibernate.createBlob(buffer));   </span>
								</li>
								<li class="">
										<span>      s.save(c);   </span>
								</li>
								<li class="alt">
										<span>      s.flush();   </span>
								</li>
								<li class="">
										<span>      s.refresh(c, LockMode.UPGRADE);       </span>
								</li>
								<li class="alt">
										<span>      BLOB blob = (BLOB) c.getImage();         </span>
								</li>
								<li class="">
										<span>      OutputStream out = blob.getBinaryOutputStream();      </span>
								</li>
								<li class="alt">
										<span>      String fileName = </span>
										<span class="string">"oraclejdbc.jar"</span>
										<span>;   </span>
								</li>
								<li class="">
										<span>      File f = </span>
										<span class="keyword">new</span>
										<span> File(fileName);   </span>
								</li>
								<li class="alt">
										<span>      FileInputStream fin = </span>
										<span class="keyword">new</span>
										<span> FileInputStream(f);      </span>
								</li>
								<li class="">
										<span>      </span>
										<span class="keyword">int</span>
										<span> count = -</span>
										<span class="number">1</span>
										<span>, total = </span>
										<span class="number">0</span>
										<span>;   </span>
								</li>
								<li class="alt">
										<span>      </span>
										<span class="keyword">byte</span>
										<span>[] data = </span>
										<span class="keyword">new</span>
										<span> </span>
										<span class="keyword">byte</span>
										<span>[(</span>
										<span class="keyword">int</span>
										<span>)fin.available()];   </span>
								</li>
								<li class="">
										<span>      fin.read(data);   </span>
								</li>
								<li class="alt">
										<span>      out.write(data);         </span>
								</li>
								<li class="">
										<span>      fin.close();   </span>
								</li>
								<li class="alt">
										<span>      out.close();   </span>
								</li>
								<li class="">
										<span>      s.flush();   </span>
								</li>
								<li class="alt">
										<span>      tx.commit();   </span>
								</li>
								<li class="">
										<span>      </span>
								</li>
								<li class="alt">
										<span>    } </span>
										<span class="keyword">catch</span>
										<span> (Exception e) {   </span>
								</li>
								<li class="">
										<span>      System.out.println(e.getMessage());   </span>
								</li>
								<li class="alt">
										<span>    } </span>
										<span class="keyword">finally</span>
										<span> {   </span>
								</li>
								<li class="">
										<span>      </span>
										<span class="keyword">if</span>
										<span> (s != </span>
										<span class="keyword">null</span>
										<span>)   </span>
								</li>
								<li class="alt">
										<span>        </span>
										<span class="keyword">try</span>
										<span> {   </span>
								</li>
								<li class="">
										<span>          s.close();   </span>
								</li>
								<li class="alt">
										<span>        } </span>
										<span class="keyword">catch</span>
										<span> (Exception e) {}   </span>
								</li>
								<li class="">
										<span>    }       </span>
								</li>
								<li class="alt">
										<span>       </span>
								</li>
								<li class="">
										<span>  }   </span>
								</li>
								<li class="alt">
										<span>}  </span>
								</li>
						</ol>
				</div>
		</div>
<img src ="http://www.blogjava.net/hxweb/aggbug/123813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxweb/" target="_blank">好学蜘蛛</a> 2007-06-13 11:02 <a href="http://www.blogjava.net/hxweb/archive/2007/06/13/123813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate的批量删除的效率分析 </title><link>http://www.blogjava.net/hxweb/archive/2007/06/13/123809.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/archive/2007/06/13/123809.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123809.html</wfw:comment><comments>http://www.blogjava.net/hxweb/archive/2007/06/13/123809.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123809.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hibernate作为ORM，有一个ORM固有的问题，就是由于为了持久对象的同步，不能够使用批量删除和批量更新的sql，只能按照主键一条条来操作。因此效率相对JDBC来说是比较低的。然而事情也并不总是那么绝望，只要你对Hibernate进行优化，也可以得到相当满意的速度。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/hxweb/archive/2007/06/13/123809.html'>阅读全文</a><img src ="http://www.blogjava.net/hxweb/aggbug/123809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxweb/" target="_blank">好学蜘蛛</a> 2007-06-13 10:55 <a href="http://www.blogjava.net/hxweb/archive/2007/06/13/123809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse走向MDA，到达Rational Architect </title><link>http://www.blogjava.net/hxweb/archive/2007/02/14/99842.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 14 Feb 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/archive/2007/02/14/99842.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/99842.html</wfw:comment><comments>http://www.blogjava.net/hxweb/archive/2007/02/14/99842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/99842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/99842.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">Rational Architect</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，</span>
				<span lang="EN-US">MDA</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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过工具本身建立设计</span>
				<span lang="EN-US">Model</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，中间可以用</span>
				<span lang="EN-US">pattern</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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后，根据自己的架构，开发符合</span>
				<span lang="EN-US">Rational Architect</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; TEXT-INDENT: 21.75pt">
				<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; TEXT-INDENT: 21.75pt">
				<span lang="EN-US"> <?XML:NAMESPACE PREFIX = O /?><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而在</span>
				<span lang="EN-US">open source</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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过</span>
				<span lang="EN-US">ArgoUml</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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过</span>
				<span lang="EN-US">Argo2Ecore</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">转换为</span>
				<span lang="EN-US">xmi</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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基于</span>
				<span lang="EN-US">Merlin</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; TEXT-INDENT: 21.75pt">
				<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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果自定义</span>
				<span lang="EN-US">@Generator</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; TEXT-INDENT: 21.75pt">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之前，一般通过</span>
				<span lang="EN-US">xDoclet</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; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">现在，也用</span>
				<span lang="EN-US">Java 1.5</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">Annoation</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; TEXT-INDENT: 21.75pt">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt">
				<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; TEXT-INDENT: 21.75pt">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span lang="EN-US">Rational Architect </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">Eclipse</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是同源的，基础结构一样。</span>
				<span lang="EN-US">Rational Architect</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">MDA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分，极其接近。核心的是</span>
				<span lang="EN-US">EMF</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN-US">uml2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN-US">JDT</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN-US">plug-in</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；共同的是</span>
				<span lang="EN-US">xmi</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。不同的是具体代码生成，</span>
				<span lang="EN-US">Architect</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有</span>
				<span lang="EN-US">xtool</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">api</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；而</span>
				<span lang="EN-US">eclipse</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，可以用</span>
				<span lang="EN-US">open souce</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的插件，如</span>
				<span lang="EN-US">Merlin</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Argo2Ecore</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"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所以，基本的</span>
				<span lang="EN-US">MDA</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">理论必须的。</span>
				<span lang="EN-US">Eclpise</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发平台的</span>
				<span lang="EN-US">Framework</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">plug-in</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是必须掌握的。</span>
				<span lang="EN-US">Emf,uml2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等也必定要。然后，分开在</span>
				<span lang="EN-US">Rational Architect</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中和</span>
				<span lang="EN-US">Melrin</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等实现转换（</span>
				<span lang="EN-US">m2m,m2c</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"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所以，</span>
				<span lang="EN-US">Eclpise</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">Jbuilder</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；</span>
				<span lang="EN-US">IBM</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">Sun</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; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span lang="EN-US">Eclipse</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的野心，是基础性开发平台，然后可以开发丰富的插件。是一个</span>
				<span lang="EN-US">open</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; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而</span>
				<span lang="EN-US">sun </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>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<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"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<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">Eclpise</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，从工具的角度，又多了</span>
				<span lang="EN-US">open</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; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相比，</span>
				<span lang="EN-US">Jbuilder</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"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<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; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就象一个世界，一个社会，民主和自由，导致更多追随着进步。</span>
		</p>
		<br />
<img src ="http://www.blogjava.net/hxweb/aggbug/99842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxweb/" target="_blank">好学蜘蛛</a> 2007-02-14 16:51 <a href="http://www.blogjava.net/hxweb/archive/2007/02/14/99842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>