﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-好学驿站-文章分类-hibernate</title><link>http://www.blogjava.net/hxweb/category/20056.html</link><description>JSP、JAVA、struts、hibernate、spring、eclipse、工作流、电子政务、协同办公、J2ME</description><language>zh-cn</language><lastBuildDate>Wed, 13 Jun 2007 06:35:38 GMT</lastBuildDate><pubDate>Wed, 13 Jun 2007 06:35:38 GMT</pubDate><ttl>60</ttl><item><title>Hibernate中代码自动生成功能小结 （很早的版本）</title><link>http://www.blogjava.net/hxweb/articles/123824.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/articles/123824.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123824.html</wfw:comment><comments>http://www.blogjava.net/hxweb/articles/123824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123824.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123824.html</trackback:ping><description><![CDATA[
		<table width="100%">
				<tbody>
						<tr>
								<td>
										<p>Hibernate中需要class和mapping file, 也就是java文件和hbm.xml文件，由于Hibernate只支持DML， 不支持DDL，所以在DB中需要有DDL或已经存在的数据库的表。Hibernate中共有三种文件与代码自动生成功能有关： <br />class, mapping file and DDL</p>
										<p>1. Middlegen <br />是用来从DB中已存在的表，生成相应的mapping file. 可以下载一个老外的middlegen的例子。 <br /><a href="http://sourceforge.net/project/showfiles.php?group_id=40712" target="blank">http://sourceforge.net/project/showfiles.php?group_id=40712</a></p>
										<p>调用Middlegen很简单，例子中的middlegen自动生成ant指令如下 <br /></p>
										<div class="quote_title">引用</div>
										<div class="quote_div">
												<br />&lt;middlegen <br />appname="${name}" <br />prefsdir="${src.dir}" <br />gui="${gui}" <br />databaseurl="${database.url}" <br />initialContextFactory="${java.naming.factory.initial}" <br />providerURL="${java.naming.provider.url}" <br />datasourceJNDIName="${datasource.jndi.name}" <br />driver="${database.driver}" <br />username="${database.userid}" <br />password="${database.password}" <br /><br />&gt; <br />&lt;hibernate <br />destination="${build.gen-src.dir}" <br />package="${name}.hibernate" <br />/&gt; <br />&lt;/middlegen&gt; <br /></div>
										<p>
										</p>
										<p>然后会有一个GUI，给我们专门设计各种表与表之间的关系(一对一，一对多以及单向双向关系)。需要说明的是，middlegen生成的代码没有直接写mapping file灵活性好，所以生成的mapping file有时还需要我们去修改。</p>
										<p>2. XDoclet <br />它是用来从java文件自动生成hbm文件的，不过我们需要在java代码中写一些规定的tag，才能得到自动生成的hbm文件. <br /></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">hibernatedoclet</span>
																				<span>  </span>
																		</span>
																</li>
																<li class="">
																		<span>          </span>
																		<span class="attribute">destdir</span>
																		<span>=</span>
																		<span class="attribute-value">"src"</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>          </span>
																		<span class="attribute">excludedtags</span>
																		<span>=</span>
																		<span class="attribute-value">"@version,@author,@todo"</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>          </span>
																		<span class="attribute">force</span>
																		<span>=</span>
																		<span class="attribute-value">"true"</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>          </span>
																		<span class="attribute">verbose</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">fileset</span>
																		<span> </span>
																		<span class="attribute">dir</span>
																		<span>=</span>
																		<span class="attribute-value">"src"</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>              </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">include</span>
																		<span> </span>
																		<span class="attribute">name</span>
																		<span>=</span>
																		<span class="attribute-value">"**/*.java"</span>
																		<span class="tag">/&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>              </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">exclude</span>
																		<span> </span>
																		<span class="attribute">name</span>
																		<span>=</span>
																		<span class="attribute-value">"**/Product.java"</span>
																		<span class="tag">/&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>          </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">fileset</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>          </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">hibernate</span>
																		<span> </span>
																		<span class="attribute">version</span>
																		<span>=</span>
																		<span class="attribute-value">"2.0"</span>
																		<span class="tag">/&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>    </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">hibernatedoclet</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>3. hbm2java <br />它是用来从mapping 文件生成java代码的工具，调用很简单，在参数中需要给出所有的hbm文件，如下： <br /></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">java</span>
																				<span> </span>
																				<span class="attribute">classname</span>
																				<span>=</span>
																				<span class="attribute-value">"net.sf.hibernate.tool.hbm2java.CodeGenerator"</span>
																				<span> </span>
																				<span class="attribute">fork</span>
																				<span>=</span>
																				<span class="attribute-value">"true"</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</span>
																</li>
																<li class="">
																		<span>      </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">classpath</span>
																		<span> </span>
																		<span class="attribute">refid</span>
																		<span>=</span>
																		<span class="attribute-value">"classpath"</span>
																		<span class="tag">/&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>      </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">arg</span>
																		<span> </span>
																		<span class="attribute">line</span>
																		<span>=</span>
																		<span class="attribute-value">"${build.gen-src.dir}/airline/hibernate/*.hbm.xml"</span>
																		<span class="tag">/&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>    </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">java</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>4. SchemaExport <br />如果写好了java文件和hbm文件，就可以用SchemaExport直接生成DDL文件，调用同样简单，只需在java代码中，加入如下： <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>conf = </span>
																				<span class="keyword">new</span>
																				<span> Configuration()   </span>
																		</span>
																</li>
																<li class="">
																		<span>     .addClass(a.</span>
																		<span class="keyword">class</span>
																		<span>)   </span>
																</li>
																<li class="alt">
																		<span>     .addClass(b.</span>
																		<span class="keyword">class</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>SchemaExport dbExport = </span>
																		<span class="keyword">new</span>
																		<span> SchemaExport(conf);   </span>
																</li>
																<li class="alt">
																		<span>dbExport.setOutputFile(</span>
																		<span class="string">"myschema.sql"</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>dbExport.create(</span>
																		<span class="keyword">true</span>
																		<span>, </span>
																		<span class="keyword">true</span>
																		<span>);   </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>从这四种自动生成工具来看， mapping file, java file and DDL，只要知道任何一种文件，都可以得到另外两种文件， <br />如：</p>
										<p>1. 只有mapping file: <br />mapping file---hbm2java----java---SchemaExport----DDL</p>
										<p>2.只有DDL <br />DDL---Middlegen---hbm----hbm2java----java</p>
										<p>3.只有Java <br />java---XDoclet---hbm----SchemaExport----DDL</p>
										<p>从这里，大家也可以体会到, Hibernate强大的灵活性。</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
<img src ="http://www.blogjava.net/hxweb/aggbug/123824.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:22 <a href="http://www.blogjava.net/hxweb/articles/123824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate的JNDI绑定分析</title><link>http://www.blogjava.net/hxweb/articles/123823.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/articles/123823.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123823.html</wfw:comment><comments>http://www.blogjava.net/hxweb/articles/123823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123823.html</trackback:ping><description><![CDATA[
		<table width="100%">
				<tbody>
						<tr>
								<td>
										<p>Hibernate的JNDI名称绑定是在net.sf.hibernate.impl.SessionFactoryObjectFactory程序里面实现的，我来分析一下Hibernate的绑定JNDI的过程： <br />我们获得SessionFactory一般是这样写代码：</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>Configuration conf = </span>
																				<span class="keyword">new</span>
																				<span> Configuration().addClass(Cat.</span>
																				<span class="keyword">class</span>
																				<span>);   </span>
																		</span>
																</li>
																<li class="">
																		<span>SessionFactory sf = conf.buildSessionFactory();   </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>首先是new Configuration()创建一个Configuration，在这个构造器里面进行配置文件(hibernate.properties)的读取工作，然后保存到一个Properties对象里面去，和JNDI相关的是这个属性：</p>
										<p>
										</p>
										<div class="code_title">代码</div>
										<div class="code_div">
												<div class="dp-highlighter">
														<ol class="dp-j">
																<li class="alt">
																		<span>
																				<span>hibernate.session_factory_name hibernate/session_factory  </span>
																		</span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>接着调用buildSessionFactory()方法，该方法检查一下配置信息，然后调用SessionFactoryImpl的一个构造器。在构造器里面注意下面两行代码：</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>name = properties.getProperty(Environment.SESSION_FACTORY_NAME);   </span>
																		</span>
																</li>
																<li class="">
																		<span>SessionFactoryObjectFactory.addInstance(uuid, name, </span>
																		<span class="keyword">this</span>
																		<span>, properties);  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>调用了SessionFactoryObjectFactory的addInstance方法，并且把自身（SessionFactory的实例）作为参数传递。最后在addInstance方法可以看到如下代码：</p>
										<p>
										</p>
										<div class="code_title">代码</div>
										<div class="code_div">
												<div class="dp-highlighter">
														<ol class="dp-j">
																<li class="alt">
																		<span>
																				<span>Context ctx = NamingHelper.getInitialContext(properties);   </span>
																		</span>
																</li>
																<li class="">
																		<span>NamingHelper.bind(ctx, name, instance);  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>instance 就是SessionFactory的实例，通过读源代码，可以清楚的看到Hibernate是在conf.buildSessionFactory()的时候通过一系列类方法调用，把创建的SessionFactory实例绑定到配置文件（hibernate.properties）中 hibernate.session_factory_name属性指定的名称上的，因此可见Hibernate自身是具有JNDI的动态绑定功能的。但是Hibernate需要获得一个SessionFactory实例用于绑定，而这个SessionFactory实例需要我们写代码进行预先创建，并且必须保证该过程要在所有其它要从JNDI上获得SessionFactory实例的程序之前完成。</p>
										<p>因此对于任何App Server来说，我们都不必去管JNDI名称的绑定过程，只需要保证预先创建一个SessionFactory实例出来就够了，剩下的工作 Hibernate会做的。那么如何确保预创建SessionFactory实例呢，如果是Servlet，可以配置一个初始化的Servlet，只要把</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>Configuration conf = </span>
																				<span class="keyword">new</span>
																				<span> Configuration().addClass(Cat.</span>
																				<span class="keyword">class</span>
																				<span>);   </span>
																		</span>
																</li>
																<li class="">
																		<span>SessionFactory sf = conf.buildSessionFactory();   </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>这样的代码加进去就可以了。如果是包含EJB的的复杂的J2EE应用，可能需要依靠App Server的功能来保证预创建SessionFactory实例。</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
<img src ="http://www.blogjava.net/hxweb/aggbug/123823.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:20 <a href="http://www.blogjava.net/hxweb/articles/123823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在Weblogic上配置Hibernate为JNDI </title><link>http://www.blogjava.net/hxweb/articles/123821.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/articles/123821.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123821.html</wfw:comment><comments>http://www.blogjava.net/hxweb/articles/123821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123821.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123821.html</trackback:ping><description><![CDATA[
		<table width="100%">
				<tbody>
						<tr>
								<td>
										<p>一、首先需要把Hibernate 用到的jar包和配置文件都放到Weblogic能够搜索到的CLASSPATH路径上。单单这一步就有很多人很迷茫，其实去仔细看看Weblogic的启动脚本文件startWeblogic.cmd和startWLS.cmd，我想大部分人都知道该怎么配置了。</p>
										<p>我机器上的有个Hibernate的项目，在D:\test\oracle目录下，该目录下的结构是： <br /></p>
										<div class="code_title">代码</div>
										<div class="code_div">
												<div class="dp-highlighter">
														<ol class="dp-j">
																<li class="alt">
																		<span>
																				<span>D:\test\oracle\lib 放置hibernate的所有jar包   </span>
																		</span>
																</li>
																<li class="">
																		<span>D:\test\oracle\src 放置源代码   </span>
																</li>
																<li class="alt">
																		<span>D:\test\oracle\classes 编译好的代码和hibernate的配置文件(hibernate.properties, log4j.properties, cache.ccf)  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>现在需要把D:\test\oracle\lib目录下那些jar文件和D:\test\oracle\classes目录都放置到Weblogic的 CLASSPATH里面去，所以修改mydomain里面的Weblogic启动脚本startWeblogic.cmd，在启动Weblogic之前，插入设置CLASSPATH的命令，如下：</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="annotation">@rem</span>
																				<span> set hibernate classpath   </span>
																		</span>
																</li>
																<li class="">
																		<span>set HIBERNATE_LIB=D:\test\oracle\lib   </span>
																</li>
																<li class="alt">
																		<span>set HIBERNATE_CLASSES=D:\test\oracle\classes   </span>
																</li>
																<li class="">
																		<span>set CLASSPATH=%HIBERNATE_LIB%\cglib-asm.jar;%HIBERNATE_LIB%\commons-beanutils.jar;%HIBERNATE_LIB%\commons-collections.jar;%HIBERNATE_LIB%\commons-lang.jar;%HIBERNATE_LIB%\commons-logging.jar;%HIBERNATE_LIB%\dom4j-full.jar;%HIBERNATE_LIB%\hibernate2.jar;%HIBERNATE_LIB%\jcs.jar;%HIBERNATE_LIB%\log4j-</span>
																		<span class="number">1.2</span>
																		<span>.</span>
																		<span class="number">8</span>
																		<span>.jar;%HIBERNATE_LIB%\odmg.jar;%HIBERNATE_CLASSES%;%CLASSPATH%  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>下面一行，就是本来脚本里面的启动命令： <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="annotation">@rem</span>
																				<span> Call Weblogic Server   </span>
																		</span>
																</li>
																<li class="">
																		<span>call </span>
																		<span class="string">"C:\bea\weblogic700\server\bin\startWLS.cmd"</span>
																		<span>  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>二、在Weblogic上配置 Oracle数据库的连接池。这一步本来和Hibernate无关，但是如果你想要使用EJB，想要使用JTA，那么必须使用Weblogic提供的连接池，而不能使用Hibernate自带的连接池，或者其它第三方连接池，否则容器将无法管理数据库事务。这一步很简单，就是在Weblogic Console里面配置Connection Pool和TxData Source，我的Tx DataSource取名称为“mypool”</p>
										<p>三、修改hibernate.properties。使用Weblogic的连接池，而不是自带的连接池。我修改的是D:\test\oracle\classes\hibernate.properties，增加如下行： <br /></p>
										<div class="code_title">代码</div>
										<div class="code_div">
												<div class="dp-highlighter">
														<ol class="dp-j">
																<li class="alt">
																		<span>
																				<span>hibernate.dialect net.sf.hibernate.dialect.OracleDialect   </span>
																		</span>
																</li>
																<li class="">
																		<span>hibernate.connection.datasource mypool   </span>
																</li>
																<li class="alt">
																		<span>hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider   </span>
																</li>
																<li class="">
																		<span>hibernate.session_factory_name hibernate.session_factory  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>注意最后一行，这是使用 Hibernate来绑定JNDI给JNDI起的名称，本来应该是hibernate/session_factory，但是Weblogic要求改为. 号，不过在程序中lookup的时候还是要写hibernate/session_factory</p>
										<p>另外提到一点的是 <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>hibernate.jdbc.fetch_size </span>
																				<span class="number">50</span>
																				<span>  </span>
																		</span>
																</li>
																<li class="">
																		<span>hibernate.jdbc.batch_size </span>
																		<span class="number">25</span>
																		<span>  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>分别对数据库查询和插入有很大的性能影响，调节这两个选项可以得到最好的性能。</p>
										<p>为了保证SessionFactory实例的预创建，使用Weblogic的T3StartUpDef接口创建一个StartUp类，在Weblogic启动的时候运行： <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.util.Hashtable;   </span>
																</li>
																<li class="">
																		<span>
																		</span>
																		<span class="keyword">import</span>
																		<span> weblogic.common.T3StartupDef;   </span>
																</li>
																<li class="alt">
																		<span>
																		</span>
																		<span class="keyword">import</span>
																		<span> weblogic.common.T3ServicesDef;   </span>
																</li>
																<li class="">
																		<span>
																		</span>
																		<span class="keyword">import</span>
																		<span> net.sf.hibernate.cfg.Configuration;   </span>
																</li>
																<li class="alt">
																		<span>
																		</span>
																		<span class="keyword">import</span>
																		<span> net.sf.hibernate.SessionFactory;   </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> HibernateStartUp </span>
																		<span class="keyword">implements</span>
																		<span> T3StartupDef {   </span>
																</li>
																<li class="">
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>  </span>
																		<span class="keyword">public</span>
																		<span> </span>
																		<span class="keyword">void</span>
																		<span> setServices(T3ServicesDef services) {}   </span>
																</li>
																<li class="">
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>  </span>
																		<span class="keyword">public</span>
																		<span> String startup(String name, Hashtable args) </span>
																		<span class="keyword">throws</span>
																		<span> Exception {   </span>
																</li>
																<li class="">
																		<span>    Configuration conf = </span>
																		<span class="keyword">new</span>
																		<span> Configuration().addClass(Cat.</span>
																		<span class="keyword">class</span>
																		<span>);   </span>
																</li>
																<li class="alt">
																		<span>    SessionFactory sf = conf.buildSessionFactory();    </span>
																</li>
																<li class="">
																		<span>    </span>
																		<span class="keyword">return</span>
																		<span> </span>
																		<span class="string">"Hibernate Startup completed successfully"</span>
																		<span>;   </span>
																</li>
																<li class="alt">
																		<span>  }    </span>
																</li>
																<li class="">
																		<span>}  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>代码非常简单，其实就是确保预先运行</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>Configuration conf = </span>
																				<span class="keyword">new</span>
																				<span> Configuration().addClass(Cat.</span>
																				<span class="keyword">class</span>
																				<span>);   </span>
																		</span>
																</li>
																<li class="">
																		<span>SessionFactory sf = conf.buildSessionFactory();   </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>把sf创建出来，而Hibernate会自行调用一系列类方法，把sf绑定到Weblogic的的JNDI树下的hibernate/session_factory路径中。</p>
										<p>4、编译HibernateStartUp.java <br />编译这个源代码的时候需要注意的是，要把weblogic.jar包和Hibernate所有的相关包和配置文件导入。我是把这个源代码放到D:\test\oracle\src目录下的，用早已编写好的ant脚本运行一下就编译好了，并且编译好的 class文件被放置到D:\test\oracle\classes目录下，该目录已经被加入到Weblogic的CLASSPATH里面，因此很省事。</p>
										<p>五、配置StartUp类 <br />启动Weblogic，打开Console控制台，在左边的Applet树上找到StartUp &amp; Shutdown，然后在右边点击“Configure a new Startup Class...”，在Name框里面随便填写，在ClassName里面填写你编写的StartUp类，我填写的是 com.fankai.HibernateStartUp ，然后点击“Apply”。然后切换到Target这选项卡，在Target-Server左边的 Avaiable框里面选择“myserver”，点击右箭头，把它挪到右边的“Chosen”框里面去，最后再点击一下“Apply"按钮。如果此时 Weblogic的DOS窗口里面没有出错信息，那么应该已经配置成功了。</p>
										<p>六、现在关闭Weblogic，再重新运行 startWelogic.cmd，启动Weblogic，观察DOS窗口的输出信息，可以看到Hibernate的初始化信息一屏屏的滚动输出，证明已经配置成功。现在再打开Console控制台，点击左边Applet树中的Servers|myserver，然后可以在右边最下面找到“View JNDI tree ”，点击它，会打开一个浏览器窗口，显示JNDI树，这时你可以看到一个名称为hibernate的JNDI对象，在左边的Applet树中点击它，看右边的详细信息，我的机器上的信息如下： <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>Bind Name: hibernate   </span>
																		</span>
																</li>
																<li class="">
																		<span>Object Class: net.sf.hibernate.impl.SessionFactoryImpl   </span>
																</li>
																<li class="alt">
																		<span>Object Hash Code: </span>
																		<span class="number">454492</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>Object To String: net.sf.hibernate.impl.SessionFactoryImpl</span>
																		<span class="annotation">@6ef5c</span>
																		<span>  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<br />完全正确！ <br />最后你可以随意在EJB或者Servlet/JSP里面使用JND查找来获得SessionFactory了。 
<p></p><p>例如：</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>Context ctx = </span><span class="keyword">new</span><span> InitialContext();   </span></span></li><li class=""><span>SessionFactory sf = (SessionFactory) ctx.lookup(</span><span class="string">"hibernate/session_factory"</span><span>);  </span></li></ol></div></div><script><![CDATA[ender_code();]]&gt;</script><p></p><p>在其它App Server上如何配置，本质上和Weblogic是一样的，只是你要确保在其它程序运行之前，先把</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>Configuration conf = </span><span class="keyword">new</span><span> Configuration().addClass(Cat.</span><span class="keyword">class</span><span>);   </span></span></li><li class=""><span>SessionFactory sf = conf.buildSessionFactory();   </span></li></ol></div></div><script><![CDATA[ender_code();]]&gt;</script><p></p><p>这两行代码运行一遍就OK了</p></td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
<img src ="http://www.blogjava.net/hxweb/aggbug/123821.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:11 <a href="http://www.blogjava.net/hxweb/articles/123821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate实现分页查询的原理分析 </title><link>http://www.blogjava.net/hxweb/articles/123820.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/articles/123820.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123820.html</wfw:comment><comments>http://www.blogjava.net/hxweb/articles/123820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123820.html</trackback:ping><description><![CDATA[
		<table width="100%">
				<tbody>
						<tr>
								<td>
										<p>Hibernate 可以实现分页查询，例如： <br />从第2万条开始取出100条记录</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>Query q = session.createQuery(</span>
																				<span class="string">"from Cat as c"</span>
																				<span>);   </span>
																		</span>
																</li>
																<li class="">
																		<span>q.setFirstResult(</span>
																		<span class="number">20000</span>
																		<span>);   </span>
																</li>
																<li class="alt">
																		<span>q.setMaxResults(</span>
																		<span class="number">100</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>List l = q.list();  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>那么Hibernate底层如何实现分页的呢？实际上Hibernate的查询定义在net.sf.hibernate.loader.Loader这个类里面，仔细阅读该类代码，就可以把问题彻底搞清楚。</p>
										<p>Hibernate2.0.3的Loader源代码第480行以下：</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">if</span>
																				<span> (useLimit) sql = dialect.getLimitString(sql);           </span>
																		</span>
																</li>
																<li class="">
																		<span>PreparedStatement st = session.getBatcher().prepareQueryStatement(sql, scrollable);  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>如果相应的数据库定义了限定查询记录的sql语句，那么直接使用特定数据库的sql语句。</p>
										<p>然后来看net.sf.hibernate.dialect.MySQLDialect:</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">public</span>
																				<span> </span>
																				<span class="keyword">boolean</span>
																				<span> supportsLimit() {   </span>
																		</span>
																</li>
																<li class="">
																		<span>  </span>
																		<span class="keyword">return</span>
																		<span> </span>
																		<span class="keyword">true</span>
																		<span>;   </span>
																</li>
																<li class="alt">
																		<span>}   </span>
																</li>
																<li class="">
																		<span>
																		</span>
																		<span class="keyword">public</span>
																		<span> String getLimitString(String sql) {   </span>
																</li>
																<li class="alt">
																		<span>  StringBuffer pagingSelect = </span>
																		<span class="keyword">new</span>
																		<span> StringBuffer(</span>
																		<span class="number">100</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>  pagingSelect.append(sql);   </span>
																</li>
																<li class="alt">
																		<span>  pagingSelect.append(</span>
																		<span class="string">" limit ?, ?"</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>  </span>
																		<span class="keyword">return</span>
																		<span> pagingSelect.toString();   </span>
																</li>
																<li class="alt">
																		<span>}  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>这是MySQL的专用分页语句，再来看net.sf.hibernate.dialect.Oracle9Dialect:</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">public</span>
																				<span> </span>
																				<span class="keyword">boolean</span>
																				<span> supportsLimit() {   </span>
																		</span>
																</li>
																<li class="">
																		<span>  </span>
																		<span class="keyword">return</span>
																		<span> </span>
																		<span class="keyword">true</span>
																		<span>;   </span>
																</li>
																<li class="alt">
																		<span>}   </span>
																</li>
																<li class="">
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>
																		</span>
																		<span class="keyword">public</span>
																		<span> String getLimitString(String sql) {   </span>
																</li>
																<li class="">
																		<span>  StringBuffer pagingSelect = </span>
																		<span class="keyword">new</span>
																		<span> StringBuffer(</span>
																		<span class="number">100</span>
																		<span>);   </span>
																</li>
																<li class="alt">
																		<span>  pagingSelect.append(</span>
																		<span class="string">"select * from ( select row_.*, rownum rownum_ from ( "</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>  pagingSelect.append(sql);   </span>
																</li>
																<li class="alt">
																		<span>  pagingSelect.append(</span>
																		<span class="string">" ) row_ where rownum &lt;= ?) where rownum_ &gt; ?"</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>  </span>
																		<span class="keyword">return</span>
																		<span> pagingSelect.toString();   </span>
																</li>
																<li class="alt">
																		<span>}  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>Oracle采用嵌套3层的查询语句结合rownum来实现分页，这在Oracle上是最快的方式，如果只是一层或者两层的查询语句的rownum不能支持order by。</p>
										<p>除此之外，Interbase，PostgreSQL，HSQL也支持分页的sql语句，在相应的Dialect里面，大家自行参考。</p>
										<p>如果数据库不支持分页的SQL语句，那么根据在配置文件里面 <br />#hibernate.jdbc.use_scrollable_resultset true <br />默认是true，如果你不指定为false，那么Hibernate会使用JDBC2.0的scrollable result来实现分页，看Loader第430行以下：</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">if</span>
																				<span> ( session.getFactory().useScrollableResultSets() ) {   </span>
																		</span>
																</li>
																<li class="">
																		<span>  </span>
																		<span class="comment">// we can go straight to the first required row </span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>  rs.absolute(firstRow);   </span>
																</li>
																<li class="">
																		<span>}   </span>
																</li>
																<li class="alt">
																		<span>
																		</span>
																		<span class="keyword">else</span>
																		<span> {   </span>
																</li>
																<li class="">
																		<span>  </span>
																		<span class="comment">// we need to step through the rows one row at a time (slow) </span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>  </span>
																		<span class="keyword">for</span>
																		<span> ( </span>
																		<span class="keyword">int</span>
																		<span> m=</span>
																		<span class="number">0</span>
																		<span>; m&lt;firstRow; m++ ) rs.next();   </span>
																</li>
																<li class="">
																		<span>}  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>如果支持scrollable result，使用ResultSet的absolute方法直接移到查询起点，如果不支持的话，使用循环语句，rs.next一点点的移过去。</p>
										<p>可见使用Hibernate，在进行查询分页的操作上，是具有非常大的灵活性，Hibernate会首先尝试用特定数据库的分页sql，如果没用，再尝试Scrollable，如果不行，最后采用rset.next()移动的办法。</p>
										<p>在查询分页代码中使用Hibernate的一大好处是，既兼顾了查询分页的性能，同时又保证了代码在不同的数据库之间的可移植性。</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
<img src ="http://www.blogjava.net/hxweb/aggbug/123820.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:10 <a href="http://www.blogjava.net/hxweb/articles/123820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat+Mysql+UltraEdit，10分钟Hibernate初体验 </title><link>http://www.blogjava.net/hxweb/articles/123815.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/hxweb/articles/123815.html</guid><wfw:comment>http://www.blogjava.net/hxweb/comments/123815.html</wfw:comment><comments>http://www.blogjava.net/hxweb/articles/123815.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxweb/comments/commentRss/123815.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxweb/services/trackbacks/123815.html</trackback:ping><description><![CDATA[
		<table width="100%">
				<tbody>
						<tr>
								<td>
										<p>今天第一次接触Hibernate，发现以前的入门精华贴对于Tomcat+Mysql这样最pop的组合没有涉及，而且均是结合IDE进行开发，要么Jbuilder，要么Eclipse，索性我就用最简单的方式，tomcat(5.0.19)+mysql(4)+ultraedit，来实现一个Hibernate的基本查询，以方便后来人的学习。</p>
										<p>1. 保证你的Mysql工作正常。 <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>CREATE TABLE cat (   </span>
																		</span>
																</li>
																<li class="">
																		<span>    cat_id varchar(</span>
																		<span class="number">20</span>
																		<span>) NOT NULL,   </span>
																</li>
																<li class="alt">
																		<span>    name varchar(</span>
																		<span class="number">20</span>
																		<span>) NOT NULL,   </span>
																</li>
																<li class="">
																		<span>    sex </span>
																		<span class="keyword">char</span>
																		<span>(</span>
																		<span class="number">1</span>
																		<span>),   </span>
																</li>
																<li class="alt">
																		<span>    weight </span>
																		<span class="keyword">float</span>
																		<span>,   </span>
																</li>
																<li class="">
																		<span>    PRIMARY KEY (cat_id)   </span>
																</li>
																<li class="alt">
																		<span>);   </span>
																</li>
																<li class="">
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>insert cat values('</span>
																		<span class="number">1</span>
																		<span>', 'ada', 'F', </span>
																		<span class="number">5</span>
																		<span>);   </span>
																</li>
																<li class="">
																		<span>insert cat values('</span>
																		<span class="number">2</span>
																		<span>', 'belinda', 'F', </span>
																		<span class="number">10</span>
																		<span>);   </span>
																</li>
																<li class="alt">
																		<span>commit;   </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>2. 保证你的Tomcat工作正常。Then stop Tomcat。 <br />在{TOMCAT_HOME}\conf\server.xml中加入： <br /></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">Context</span>
																				<span> </span>
																				<span class="attribute">path</span>
																				<span>=</span>
																				<span class="attribute-value">"/hellohibernate"</span>
																				<span> </span>
																				<span class="attribute">docBase</span>
																				<span>=</span>
																				<span class="attribute-value">"hellohibernate"</span>
																				<span> </span>
																				<span class="attribute">reloadable</span>
																				<span>=</span>
																				<span class="attribute-value">"true"</span>
																				<span class="tag">&gt;</span>
																				<span>  </span>
																		</span>
																</li>
																<li class="">
																		<span>    </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">Resource</span>
																		<span> </span>
																		<span class="attribute">name</span>
																		<span>=</span>
																		<span class="attribute-value">"jdbc/hellohibernate"</span>
																		<span> </span>
																		<span class="attribute">scope</span>
																		<span>=</span>
																		<span class="attribute-value">"Shareable"</span>
																		<span> </span>
																		<span class="attribute">type</span>
																		<span>=</span>
																		<span class="attribute-value">"javax.sql.DataSource"</span>
																		<span class="tag">/&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>    </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">ResourceParams</span>
																		<span> </span>
																		<span class="attribute">name</span>
																		<span>=</span>
																		<span class="attribute-value">"jdbc/hellohibernate"</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>factory</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>org.apache.commons.dbcp.BasicDataSourceFactory</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="comments">&lt;!-- DBCP database connection settings --&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>url</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>jdbc:mysql://localhost:3306/test</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>driverClassName</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>com.mysql.jdbc.Driver</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>username</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>yourusername</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>password</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>yourpassword</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="comments">&lt;!-- DBCP connection pooling options --&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>maxWait</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>3000</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>maxIdle</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>100</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>        </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>maxActive</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">name</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>            </span>
																		<span class="tag">&lt;</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>10</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">value</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>        </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">parameter</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="alt">
																		<span>    </span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">ResourceParams</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
																<li class="">
																		<span>
																		</span>
																		<span class="tag">&lt;/</span>
																		<span class="tag-name">Context</span>
																		<span class="tag">&gt;</span>
																		<span>  </span>
																</li>
														</ol>
												</div>
										</div>
										<script><![CDATA[ender_code();]]&gt;</script>
										<p>
										</p>
										<p>3. 将附件hellohibernate.zip更名为hellohibernate.war，扔到{TOMCAT_HOME}\webapps下，重新启动Tomcat。</p>
										<p>4. 你会发现hellohibernate已经被自动部署了，copy下列文件到{TOMCAT_HOME}\webapps\hellohibernate\WEB-INF\lib下： <br />hibernate2.jar <br />log4j-1.2.8.jar <br />commons-collections-2.1.jar <br />commons-logging-1.0.3.jar <br />dom4j-1.4.jar <br />cglib-2.0-rc2.jar <br />odmg-3.0.jar <br />ehcache-0.6.jar <br />jta.jar <br />(其实我本可以把它们打包到war里面的，但是这样war文件就到了2M，现在才8K)</p>
										<p>5. http://localhost:9090/hellohibernate/servlet/HelloHibernateServlet <br />如果一切无误，你就可以看到cat的信息了。</p>
										<p>Hope it's helpful, thanks.</p>
								</td>
						</tr>
				</tbody>
		</table>
		<div style="PADDING-RIGHT: 10px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 15px 0px 0px 10px; PADDING-TOP: 10px">
				<table class="attach" cellspacing="0" cellpadding="2" width="95%" align="center" border="1">
						<tbody>
								<tr>
										<td class="attachrow" style="BACKGROUND: #d1d7dc" align="middle" width="100%" colspan="3">
												<b>
														<span class="gen">hellohibernate.zip</span>
												</b>
										</td>
								</tr>
								<tr>
										<td class="attachrow" width="15%">
												<span class="genmed"> 描述:</span>
										</td>
										<td class="attachrow" width="75%">  </td>
										<td class="attachrow" align="middle" width="10%" rowspan="4">
												<img alt="" src="http://www.javaeye.com/images/forum/icon_clip.gif" border="0" />
												<br />
												<a href="javascript:login_show();">
														<b>下载</b>
												</a>
										</td>
								</tr>
								<tr>
										<td class="attachrow" width="15%">
												<span class="genmed"> 文件名:</span>
										</td>
										<td class="attachrow" width="75%">
												<span class="genmed"> hellohibernate.zip</span>
										</td>
								</tr>
								<tr>
										<td class="attachrow" width="15%">
												<span class="genmed"> 文件大小:</span>
										</td>
										<td class="attachrow" width="75%">
												<span class="genmed"> 7 KB</span>
										</td>
								</tr>
								<tr>
										<td class="attachrow" width="15%">
												<span class="genmed"> 下载过的:</span>
										</td>
										<td class="attachrow" width="75%">
												<span class="genmed"> 文件被下载或查看 3177 次</span>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/hxweb/aggbug/123815.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:04 <a href="http://www.blogjava.net/hxweb/articles/123815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>