﻿<?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-My-java-spark</title><link>http://www.blogjava.net/sparkyang/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 06:27:54 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 06:27:54 GMT</pubDate><ttl>60</ttl><item><title>onunload时间会被google工具条拦掉</title><link>http://www.blogjava.net/sparkyang/archive/2006/01/22/28942.html</link><dc:creator>spark</dc:creator><author>spark</author><pubDate>Sun, 22 Jan 2006 07:23:00 GMT</pubDate><guid>http://www.blogjava.net/sparkyang/archive/2006/01/22/28942.html</guid><wfw:comment>http://www.blogjava.net/sparkyang/comments/28942.html</wfw:comment><comments>http://www.blogjava.net/sparkyang/archive/2006/01/22/28942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sparkyang/comments/commentRss/28942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sparkyang/services/trackbacks/28942.html</trackback:ping><description><![CDATA[<P>&lt;script&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function window.onbeforeunload()&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (event.clientX &gt; document.body.clientHeight || event.clientY &lt; 0 || event.altKey)&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("That's good.");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&lt;/script&gt;<BR>&nbsp;</P>
<P>&lt;--------屏蔽F5、Alt＋F4的错--------&gt;</P>
<P>&lt;script&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function window.onbeforeunload()&nbsp; {</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((event.keyCode != 0) &amp;&amp; (event.clientX &gt; document.body.clientHeight || event.clientY &lt; 0) || event.altKey)&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("That's good.");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&lt;/script&gt;</P>
<P></P><img src ="http://www.blogjava.net/sparkyang/aggbug/28942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sparkyang/" target="_blank">spark</a> 2006-01-22 15:23 <a href="http://www.blogjava.net/sparkyang/archive/2006/01/22/28942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>需求分析</title><link>http://www.blogjava.net/sparkyang/archive/2006/01/16/28246.html</link><dc:creator>spark</dc:creator><author>spark</author><pubDate>Mon, 16 Jan 2006 15:42:00 GMT</pubDate><guid>http://www.blogjava.net/sparkyang/archive/2006/01/16/28246.html</guid><wfw:comment>http://www.blogjava.net/sparkyang/comments/28246.html</wfw:comment><comments>http://www.blogjava.net/sparkyang/archive/2006/01/16/28246.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sparkyang/comments/commentRss/28246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sparkyang/services/trackbacks/28246.html</trackback:ping><description><![CDATA[需求分析的主要方法是用例(use-case).<BR>系统级别的需求其实就是系统的参与者们所要达到的目标，每一个目标就是一个用例。用例就是参与者参与活动的场景描述。<BR>每个用例参与者有三种，主要参与者，次要参与者和后台参与者。用例为其工作的参与者就是主要参与者，为用例提供服务的参与者就是次要参与者，用例结果产生影响的参与者是后台参与者。<BR>用例一般有前置条件和后置条件，当前置条件为真时，用例才开始运作，当用例顺利完成，用例的后置条件为真。用例主要描述活动执行的“欢乐路径”，如果在某一步有异常情况则到用例扩展中去说明。<BR>如果多个用例中有重复的部分，则可以提取成一个子用例。<img src ="http://www.blogjava.net/sparkyang/aggbug/28246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sparkyang/" target="_blank">spark</a> 2006-01-16 23:42 <a href="http://www.blogjava.net/sparkyang/archive/2006/01/16/28246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC事务隔离级别</title><link>http://www.blogjava.net/sparkyang/archive/2005/11/21/20728.html</link><dc:creator>spark</dc:creator><author>spark</author><pubDate>Mon, 21 Nov 2005 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/sparkyang/archive/2005/11/21/20728.html</guid><wfw:comment>http://www.blogjava.net/sparkyang/comments/20728.html</wfw:comment><comments>http://www.blogjava.net/sparkyang/archive/2005/11/21/20728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sparkyang/comments/commentRss/20728.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sparkyang/services/trackbacks/20728.html</trackback:ping><description><![CDATA[<TABLE>
<TBODY>
<TR>
<TH>JDBC隔离级别</TH>
<TH>特征</TH></TR>
<TR>
<TD>TRANSACTION_READ_UNCOMMITTED<BR>未提交的读操作</TD>
<TD>
<UL class=simplelist>
<LI class=simplelistmember>允许读取有写锁定或无写锁定的行 
<LI class=simplelistmember>未应用读锁定 
<LI class=simplelistmember>无法确保并发事务将不会修改行或回退对行所做的更改 </LI></UL></TD></TR>
<TR>
<TD>TRANSACTION_READ_COMMITTED<BR>已提交的读操作</TD>
<TD>
<UL class=simplelist>
<LI class=simplelistmember>只允许读取没有写锁定的行 
<LI class=simplelistmember>仅为读取当前行获取并保持读锁定，但当游标离开该行时释放读锁定 
<LI class=simplelistmember>无法确保数据在事务执行过程中不发生更改 </LI></UL></TD></TR>
<TR>
<TD>TRANSACTION_REPEATABLE_READ<BR>可重复的读操作</TD>
<TD>
<UL class=simplelist>
<LI class=simplelistmember>只允许读取没有写锁定的行 
<LI class=simplelistmember>读取结果集中的每一行时获取读锁定，并一直保持到事务结束为止 </LI></UL></TD></TR>
<TR>
<TD>TRANSACTION_SERIALIZABLE<BR>可序列化</TD>
<TD>
<UL class=simplelist>
<LI class=simplelistmember>只允许读取结果中没有写锁定的行 
<LI class=simplelistmember>打开游标时获取读锁定，并一直保持到事务结束为止 </LI></UL></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/sparkyang/aggbug/20728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sparkyang/" target="_blank">spark</a> 2005-11-21 11:10 <a href="http://www.blogjava.net/sparkyang/archive/2005/11/21/20728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate3与spring的整合应用</title><link>http://www.blogjava.net/sparkyang/archive/2005/09/14/13041.html</link><dc:creator>spark</dc:creator><author>spark</author><pubDate>Wed, 14 Sep 2005 15:16:00 GMT</pubDate><guid>http://www.blogjava.net/sparkyang/archive/2005/09/14/13041.html</guid><wfw:comment>http://www.blogjava.net/sparkyang/comments/13041.html</wfw:comment><comments>http://www.blogjava.net/sparkyang/archive/2005/09/14/13041.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sparkyang/comments/commentRss/13041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sparkyang/services/trackbacks/13041.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;Spring为应用程序提供一个容器, 为应用程序的管理带来了方便. 它与hibernate的结合, 形成一个完整的后台体系, 也是当今应用开发流行的做法. 奋斗了一个晚上, 终于把hibernate3与spring整合了起来, hibernate2.x和hibernate3与spring的结合稍有不同, 关键是引入的spring的包的不同, 下面我会标识出来.<BR><BR><STRONG>Spring 的配置文件applicationContext.xml</STRONG></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;?</SPAN><SPAN style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</SPAN><SPAN style="COLOR: #0000ff">?&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;!</SPAN><SPAN style="COLOR: #ff00ff">DOCTYPE&nbsp;beans&nbsp;PUBLIC&nbsp;"spring"&nbsp;"../../../lib/spring-beans.dtd"&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">beans&nbsp;</SPAN><SPAN style="COLOR: #ff0000">default-autowire</SPAN><SPAN style="COLOR: #0000ff">="no"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;default-dependency-check</SPAN><SPAN style="COLOR: #0000ff">="none"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;default-lazy-init</SPAN><SPAN style="COLOR: #0000ff">="false"</SPAN><SPAN style="COLOR: #0000ff">&gt;</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: #008000">&lt;!--</SPAN><SPAN style="COLOR: #008000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;配置数据源<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;注意:&nbsp;用org.apache.commons.dbcp.BasicDataSource,&nbsp;要引入&nbsp;apache&nbsp;commons&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;的commons-collections-3.1.jar,&nbsp;commons-dbcp-1.2.1.jar,&nbsp;commons-pool-1.2.jar三个包<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #008000">--&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">bean&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="dataSource"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;class</SPAN><SPAN style="COLOR: #0000ff">="org.apache.commons.dbcp.BasicDataSource"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;destroy-method</SPAN><SPAN style="COLOR: #0000ff">="close"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="driverClassName"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">org.gjt.mm.mysql.Driver</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="url"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">jdbc:mysql://localhost/sparkcrm</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="username"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">root</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="password"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">1111</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">bean</SPAN><SPAN style="COLOR: #0000ff">&gt;</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>&nbsp;</SPAN><SPAN style="COLOR: #008000">&lt;!--</SPAN><SPAN style="COLOR: #008000">&nbsp;配置sessionFactory,&nbsp;注意这里引入的包的不同&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">--&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">bean&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="sessionFactory"</SPAN><SPAN style="COLOR: #ff0000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;class</SPAN><SPAN style="COLOR: #0000ff">="<FONT color=#ff1493>org.springframework.orm.hibernate3.LocalSessionFactoryBean</FONT>"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="dataSource"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">ref&nbsp;</SPAN><SPAN style="COLOR: #ff0000">local</SPAN><SPAN style="COLOR: #0000ff">="dataSource"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="mappingResources"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">list</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">com/sparkcrm/schema/entities/Lead.hbm.xml</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">value</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">list</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="hibernateProperties"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">props</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">prop&nbsp;</SPAN><SPAN style="COLOR: #ff0000">key</SPAN><SPAN style="COLOR: #0000ff">="hibernate.dialect"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.hibernate.dialect.MySQLDialect<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">prop</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">prop&nbsp;</SPAN><SPAN style="COLOR: #ff0000">key</SPAN><SPAN style="COLOR: #0000ff">="hibernate.show_sql"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">true</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">prop</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">props</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">bean</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;<BR><SPAN style="COLOR: #008000">&nbsp; &lt;!--</SPAN><SPAN style="COLOR: #008000">&nbsp;配置<FONT color=#0000ff>transactionManager</FONT>,&nbsp;注意这里引入的包的不同&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">--&gt;</SPAN><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">bean&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="transactionManager"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;class</SPAN><SPAN style="COLOR: #0000ff">="<FONT color=#ff1493>org.springframework.orm.hibernate3.HibernateTransactionManager</FONT>"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="sessionFactory"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">ref&nbsp;</SPAN><SPAN style="COLOR: #ff0000">local</SPAN><SPAN style="COLOR: #0000ff">="sessionFactory"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">bean</SPAN><SPAN style="COLOR: #0000ff">&gt;<BR></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&lt;--事务代理在这里配置, 这里省略了 --&gt;<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>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">bean&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="leadDAO"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;class</SPAN><SPAN style="COLOR: #0000ff">="com.sparkcrm.schema.dao.LeadDao"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="sessionFactory"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">ref&nbsp;</SPAN><SPAN style="COLOR: #ff0000">local</SPAN><SPAN style="COLOR: #0000ff">="sessionFactory"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">property</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">bean</SPAN><SPAN style="COLOR: #0000ff">&gt;</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">&lt;/</SPAN><SPAN style="COLOR: #800000">beans</SPAN><SPAN style="COLOR: #0000ff">&gt;</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><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR><STRONG>一个示例的hibernate的映射文件<BR></STRONG><BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;?</SPAN><SPAN style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</SPAN><SPAN style="COLOR: #0000ff">?&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;!</SPAN><SPAN style="COLOR: #ff00ff">DOCTYPE&nbsp;hibernate-mapping&nbsp;PUBLIC&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Mapping&nbsp;DTD&nbsp;3.0//EN"<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">hibernate-mapping&nbsp;</SPAN><SPAN style="COLOR: #ff0000">package</SPAN><SPAN style="COLOR: #0000ff">="com.sparkcrm.schema.entities"</SPAN><SPAN style="COLOR: #0000ff">&gt;<BR></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&lt;!-- 我在这里用了hibernate的动态模型<STRONG>(dynamic models) ,</STRONG> 没用pojo--&gt;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">class&nbsp;</SPAN><SPAN style="COLOR: #ff0000">entity-name</SPAN><SPAN style="COLOR: #0000ff">="Lead"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;table</SPAN><SPAN style="COLOR: #0000ff">="Lead"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">id&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="id"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;column</SPAN><SPAN style="COLOR: #0000ff">="id"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="string"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">generator&nbsp;</SPAN><SPAN style="COLOR: #ff0000">class</SPAN><SPAN style="COLOR: #0000ff">="uuid.hex"</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">id</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="companyName"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="string"</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="topic"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="string"</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">property&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="contactName"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="string"</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">class</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">hibernate-mapping</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR><STRONG>DAO代码:</STRONG></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><STRONG><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></STRONG><SPAN style="COLOR: #000000">import&nbsp;java.util.Map;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>/**<BR>&nbsp;&nbsp; *&nbsp;DAO接口<BR>&nbsp;&nbsp; */<BR><IMG id=Codehighlighter1_45_273_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_273_Open_Text.style.display='none'; Codehighlighter1_45_273_Closed_Image.style.display='inline'; Codehighlighter1_45_273_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_45_273_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_273_Closed_Text.style.display='none'; Codehighlighter1_45_273_Open_Image.style.display='inline'; Codehighlighter1_45_273_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">interface</SPAN><SPAN style="COLOR: #000000">&nbsp;IDAO&nbsp;</SPAN><SPAN id=Codehighlighter1_45_273_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_45_273_Open_Text><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>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;create(Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;map);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;update(Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;map);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;delete(String&nbsp;id);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;share(String&nbsp;id,&nbsp;String&nbsp;userId,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;rights);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;assign(String&nbsp;id,&nbsp;String&nbsp;userId);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN><BR><STRONG><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><BR></STRONG><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;java.util.Map;<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>import&nbsp;org.springframework.orm.hibernate3.support.HibernateDaoSupport;<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>import&nbsp;com.sparkcrm.schema.IDAO;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;com.sparkcrm.schema.Schema;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;com.sparkcrm.schema.metadata.Lead;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>/**<BR>&nbsp;&nbsp;&nbsp; *一个示例的DAO实现, 继承HibernateDaoSupport, 用spring带来的管理session等的便利<BR>&nbsp;&nbsp;&nbsp; */<BR><IMG id=Codehighlighter1_547_970_Open_Image onclick="this.style.display='none'; Codehighlighter1_547_970_Open_Text.style.display='none'; Codehighlighter1_547_970_Closed_Image.style.display='inline'; Codehighlighter1_547_970_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_547_970_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_547_970_Closed_Text.style.display='none'; Codehighlighter1_547_970_Open_Image.style.display='inline'; Codehighlighter1_547_970_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top>public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;LeadDao&nbsp;extends&nbsp;HibernateDaoSupport&nbsp;implements&nbsp;IDAO&nbsp;</SPAN><SPAN><IMG src="http://www.blogjava.net/Images/dot.gif"><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_597_693_Open_Image onclick="this.style.display='none'; Codehighlighter1_597_693_Open_Text.style.display='none'; Codehighlighter1_597_693_Closed_Image.style.display='inline'; Codehighlighter1_597_693_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_597_693_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_597_693_Closed_Text.style.display='none'; Codehighlighter1_597_693_Open_Image.style.display='inline'; Codehighlighter1_597_693_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;create(Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;map)&nbsp;</SPAN><SPAN><IMG src="http://www.blogjava.net/Images/dot.gif"><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().saveOrUpdate(Schema.LEAD,&nbsp;map);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;(String)&nbsp;map.</SPAN><SPAN>get(Lead.ID);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_741_747_Open_Image onclick="this.style.display='none'; Codehighlighter1_741_747_Open_Text.style.display='none'; Codehighlighter1_741_747_Closed_Image.style.display='inline'; Codehighlighter1_741_747_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_741_747_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_741_747_Closed_Text.style.display='none'; Codehighlighter1_741_747_Open_Image.style.display='inline'; Codehighlighter1_741_747_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;update(Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;map)&nbsp;</SPAN><SPAN><IMG src="http://www.blogjava.net/Images/dot.gif"><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_796_814_Open_Image onclick="this.style.display='none'; Codehighlighter1_796_814_Open_Text.style.display='none'; Codehighlighter1_796_814_Closed_Image.style.display='inline'; Codehighlighter1_796_814_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_796_814_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_796_814_Closed_Text.style.display='none'; Codehighlighter1_796_814_Open_Image.style.display='inline'; Codehighlighter1_796_814_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;public</SPAN><SPAN style="COLOR: #000000">&nbsp;Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;delete(String&nbsp;id)&nbsp;</SPAN><SPAN><IMG src="http://www.blogjava.net/Images/dot.gif"><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN>null;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_877_896_Open_Image onclick="this.style.display='none'; Codehighlighter1_877_896_Open_Text.style.display='none'; Codehighlighter1_877_896_Closed_Image.style.display='inline'; Codehighlighter1_877_896_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_877_896_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_877_896_Closed_Text.style.display='none'; Codehighlighter1_877_896_Open_Image.style.display='inline'; Codehighlighter1_877_896_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;public</SPAN><SPAN style="COLOR: #000000">&nbsp;boolean&nbsp;share(String&nbsp;id,&nbsp;String&nbsp;userId,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;rights)&nbsp;</SPAN><SPAN><IMG src="http://www.blogjava.net/Images/dot.gif"><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN>false;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_948_967_Open_Image onclick="this.style.display='none'; Codehighlighter1_948_967_Open_Text.style.display='none'; Codehighlighter1_948_967_Closed_Image.style.display='inline'; Codehighlighter1_948_967_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_948_967_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_948_967_Closed_Text.style.display='none'; Codehighlighter1_948_967_Open_Image.style.display='inline'; Codehighlighter1_948_967_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;public</SPAN><SPAN style="COLOR: #000000">&nbsp;boolean&nbsp;assign(String&nbsp;id,&nbsp;String&nbsp;userId)&nbsp;</SPAN><SPAN><IMG src="http://www.blogjava.net/Images/dot.gif"><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN>false;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</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/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></DIV>
<P><STRONG>示意性的测试代码:</STRONG></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><STRONG><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></STRONG><SPAN style="COLOR: #000000">import&nbsp;java.sql.Timestamp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;java.util.Date;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;java.util.HashMap;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>import&nbsp;java.util.Map;<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>import&nbsp;junit.framework.TestCase;<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>import&nbsp;org.springframework.context.support.ClassPathXmlApplicationContext;<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>import&nbsp;com.sparkcrm.schema.IDAO;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_285_757_Open_Image onclick="this.style.display='none'; Codehighlighter1_285_757_Open_Text.style.display='none'; Codehighlighter1_285_757_Closed_Image.style.display='inline'; Codehighlighter1_285_757_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_285_757_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_285_757_Closed_Text.style.display='none'; Codehighlighter1_285_757_Open_Image.style.display='inline'; Codehighlighter1_285_757_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;testLeadDAO&nbsp;extends&nbsp;TestCase&nbsp;</SPAN><SPAN id=Codehighlighter1_285_757_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_285_757_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ClassPathXmlApplicationContext&nbsp;ctx&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG id=Codehighlighter1_355_428_Open_Image onclick="this.style.display='none'; Codehighlighter1_355_428_Open_Text.style.display='none'; Codehighlighter1_355_428_Closed_Image.style.display='inline'; Codehighlighter1_355_428_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_355_428_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_355_428_Closed_Text.style.display='none'; Codehighlighter1_355_428_Open_Image.style.display='inline'; Codehighlighter1_355_428_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;setUp()</SPAN><SPAN id=Codehighlighter1_355_428_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_355_428_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;ClassPathXmlApplicationContext(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">applicationContext.xml</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG id=Codehighlighter1_461_755_Open_Image onclick="this.style.display='none'; Codehighlighter1_461_755_Open_Text.style.display='none'; Codehighlighter1_461_755_Closed_Image.style.display='inline'; Codehighlighter1_461_755_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_461_755_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_461_755_Closed_Text.style.display='none'; Codehighlighter1_461_755_Open_Image.style.display='inline'; Codehighlighter1_461_755_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;testCreateLead()</SPAN><SPAN id=Codehighlighter1_461_755_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_461_755_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDAO&nbsp;leadDao&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(IDAO)&nbsp;ctx.getBean(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">leadDAO</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;map&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;HashMap</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String,&nbsp;Object</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">companyName</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Spark&nbsp;Ltd.</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">topic</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">This&nbsp;is&nbsp;a&nbsp;Good&nbsp;Lead!</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">contactName</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">abcd</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;id&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;leadDao.create(map);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</SPAN><SPAN style="COLOR: #0000ff">out</SPAN><SPAN style="COLOR: #000000">.println(id);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</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></DIV><img src ="http://www.blogjava.net/sparkyang/aggbug/13041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sparkyang/" target="_blank">spark</a> 2005-09-14 23:16 <a href="http://www.blogjava.net/sparkyang/archive/2005/09/14/13041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate动态模型(dynamic models) 一对多映射的实现</title><link>http://www.blogjava.net/sparkyang/archive/2005/09/12/12782.html</link><dc:creator>spark</dc:creator><author>spark</author><pubDate>Mon, 12 Sep 2005 14:11:00 GMT</pubDate><guid>http://www.blogjava.net/sparkyang/archive/2005/09/12/12782.html</guid><wfw:comment>http://www.blogjava.net/sparkyang/comments/12782.html</wfw:comment><comments>http://www.blogjava.net/sparkyang/archive/2005/09/12/12782.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sparkyang/comments/commentRss/12782.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sparkyang/services/trackbacks/12782.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hibernate的动态模型为我们动态改动表结构带来了方便, 个人认为这一点非常有价值, 现在的企业级应用系统越来越强调用户可定制性, hibernate的这一点使用户自定义字段或自定义表成为可能&nbsp;.<BR>关于动态模型, 我还是把hibernate自带的测试用例贴到这里, 用以备忘.<BR><BR><STRONG>java代码:</STRONG><BR><BR>//$Id: DynamicClassTest.java,v 1.4 2005/03/06 16:31:24 oneovthafew Exp $<BR>package org.hibernate.test.dynamic;</P>
<P>import java.util.ArrayList;<BR>import java.util.HashMap;<BR>import java.util.Iterator;<BR>import java.util.List;<BR>import java.util.Map;</P>
<P>import junit.framework.Test;<BR>import junit.framework.TestSuite;</P>
<P>import org.hibernate.EntityMode;<BR>import org.hibernate.Hibernate;<BR>import org.hibernate.Session;<BR>import org.hibernate.Transaction;<BR>import org.hibernate.cfg.Configuration;<BR>import org.hibernate.cfg.Environment;<BR>import org.hibernate.test.TestCase;</P>
<P>/**<BR>&nbsp;* @author Gavin King<BR>&nbsp;*/<BR>public class DynamicClassTest extends TestCase {<BR>&nbsp;<BR>&nbsp;public DynamicClassTest(String str) {<BR>&nbsp;&nbsp;super(str);<BR>&nbsp;}</P>
<P>&nbsp;protected void configure(Configuration cfg) {<BR>&nbsp;&nbsp;cfg.setProperty(Environment.DEFAULT_ENTITY_MODE, EntityMode.MAP.toString());<BR>&nbsp;}</P>
<P>&nbsp;public void testLazyDynamicClass() {<BR>&nbsp;&nbsp;Session s = openSession();<BR>&nbsp;&nbsp;assertTrue( "Incorrectly handled default_entity_mode", s.getEntityMode() == EntityMode.MAP );<BR>&nbsp;&nbsp;Session other = s.getSession( EntityMode.MAP );<BR>&nbsp;&nbsp;assertEquals( "openSession() using same entity-mode returned new session", s, other );</P>
<P>&nbsp;&nbsp;other = s.getSession( EntityMode.POJO );<BR>&nbsp;&nbsp;other.close();<BR>&nbsp;&nbsp;assertTrue( !other.isOpen() );<BR>&nbsp;&nbsp;assertTrue( other.isConnected() );&nbsp; // because it is linked to the "root" session's connection</P>
<P>&nbsp;&nbsp;s.close();</P>
<P>&nbsp;&nbsp;s = openSession();<BR>&nbsp;&nbsp;Transaction t = s.beginTransaction();</P>
<P>&nbsp;&nbsp;Map cars = new HashMap();<BR>&nbsp;&nbsp;cars.put("description", "Cars");<BR>&nbsp;&nbsp;Map monaro = new HashMap();<BR>&nbsp;&nbsp;monaro.put("productLine", cars);<BR>&nbsp;&nbsp;monaro.put("name", "monaro");<BR>&nbsp;&nbsp;monaro.put("description", "Holden Monaro");<BR>&nbsp;&nbsp;Map hsv = new HashMap();<BR>&nbsp;&nbsp;hsv.put("productLine", cars);<BR>&nbsp;&nbsp;hsv.put("name", "hsv");<BR>&nbsp;&nbsp;hsv.put("description", "Holden Commodore HSV");<BR>&nbsp;&nbsp;List models = new ArrayList();<BR>&nbsp;&nbsp;cars.put("models", models);<BR>&nbsp;&nbsp;models.add(hsv);<BR>&nbsp;&nbsp;models.add(monaro);<BR>&nbsp;&nbsp;s.save("ProductLine", cars);<BR>&nbsp;&nbsp;t.commit();<BR>&nbsp;&nbsp;s.close();</P>
<P>&nbsp;&nbsp;s = openSession();<BR>&nbsp;&nbsp;t = s.beginTransaction();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;cars = (Map) s.createQuery("from ProductLine pl order by pl.description").uniqueResult();<BR>&nbsp;&nbsp;models = (List) cars.get("models");<BR>&nbsp;&nbsp;assertFalse( Hibernate.isInitialized(models) );<BR>&nbsp;&nbsp;assertEquals( models.size(), 2);<BR>&nbsp;&nbsp;assertTrue( Hibernate.isInitialized(models) );<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;s.clear();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;List list = s.createQuery("from Model m").list();<BR>&nbsp;&nbsp;for ( Iterator i=list.iterator(); i.hasNext(); ) {<BR>&nbsp;&nbsp;&nbsp;assertFalse( Hibernate.isInitialized( ( (Map) i.next() ).get("productLine") ) );<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;Map model = (Map) list.get(0);<BR>&nbsp;&nbsp;assertTrue( ( (List) ( (Map) model.get("productLine") ).get("models") ).contains(model) );<BR>&nbsp;&nbsp;s.clear();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;t.commit();<BR>&nbsp;&nbsp;s.close();</P>
<P>&nbsp;&nbsp;s = openSession();<BR>&nbsp;&nbsp;t = s.beginTransaction();<BR>&nbsp;&nbsp;cars = (Map) s.createQuery("from ProductLine pl order by pl.description").uniqueResult();<BR>&nbsp;&nbsp;s.delete(cars);<BR>&nbsp;&nbsp;t.commit();<BR>&nbsp;&nbsp;s.close();<BR>&nbsp;}</P>
<P><BR>&nbsp;protected String[] getMappings() {<BR>&nbsp;&nbsp;return new String[] { "dynamic/ProductLine.hbm.xml" };<BR>&nbsp;}</P>
<P>&nbsp;public static Test suite() {<BR>&nbsp;&nbsp;return new TestSuite(DynamicClassTest.class);<BR>&nbsp;}</P>
<P>}</P>
<P><STRONG>配置文件:</STRONG><BR><BR>&lt;?xml version="1.0"?&gt;<BR>&lt;!DOCTYPE hibernate-mapping PUBLIC <BR>&nbsp;"-//Hibernate/Hibernate Mapping DTD 3.0//EN"<BR>&nbsp;"<A href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</A>"&gt;</P>
<P>&lt;hibernate-mapping&gt;</P>
<P>&lt;!-- </P>
<P>&nbsp; This mapping demonstrates "dynamic" entities.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>--&gt;</P>
<P>&nbsp;&lt;class entity-name="ProductLine"&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &nbsp;&lt;id name="id"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;column="productId"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;length="32"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;type="string"&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;generator class="uuid.hex"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&lt;/id&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &nbsp;&lt;property name="description"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;not-null="true"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;length="200"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;type="string"/&gt;</P>
<P>&nbsp;&nbsp;&nbsp;<FONT color=#ff0000> &nbsp;&lt;!-- don't use sets for associations, unless you want stack overflows! --&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--这一点要特别小心, 我刚开始做试验的时候用的就是Set, 结果抛出&nbsp;stack overflows异常, 害的我两个小时搞不定, 最后还是看了这个test, 才知道用这样的限制--&gt;</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bag name="models"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cascade="all"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;inverse="true"&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;key column="productId"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;one-to-many class="Model"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&lt;/bag&gt;</P>
<P>&nbsp;&lt;/class&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &lt;class entity-name="Model"&gt;</P>
<P>&nbsp;&nbsp;&nbsp; &nbsp;&lt;id name="id"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;column="modelId" <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;length="32"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;type="string"&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;generator class="uuid.hex"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&lt;/id&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&lt;property name="name"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;not-null="true"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;length="25"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;type="string"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&lt;property name="description" <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;not-null="true" <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;length="200"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;type="string"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&lt;many-to-one name="productLine" <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;column="productId"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;not-null="true"<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;class="ProductLine"/&gt;<BR>&nbsp;&nbsp;&nbsp; &nbsp;<BR>&nbsp;&lt;/class&gt;</P>
<P>&lt;/hibernate-mapping&gt;<BR></P><img src ="http://www.blogjava.net/sparkyang/aggbug/12782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sparkyang/" target="_blank">spark</a> 2005-09-12 22:11 <a href="http://www.blogjava.net/sparkyang/archive/2005/09/12/12782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>