ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>婷婷久久免费视频,亚洲日本一区二区三区在线不卡,中文字幕亚洲一区http://www.aygfsteel.com/hxweb/category/20058.htmlJSPã€JAVAã€strutsã€hibernateã€springã€eclipseã€å·¥ä½œæµã€ç”µå­æ”¿åŠ¡ã€ååŒåŠžå…¬ã€J2MEzh-cnWed, 13 Jun 2007 06:35:38 GMTWed, 13 Jun 2007 06:35:38 GMT60Hibernate中代ç è‡ªåŠ¨ç”ŸæˆåŠŸèƒ½å°¾l?åQˆå¾ˆæ—©çš„版本åQ?/title><link>http://www.aygfsteel.com/hxweb/articles/123824.html</link><dc:creator>好学蜘蛛</dc:creator><author>好学蜘蛛</author><pubDate>Wed, 13 Jun 2007 03:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/hxweb/articles/123824.html</guid><wfw:comment>http://www.aygfsteel.com/hxweb/comments/123824.html</wfw:comment><comments>http://www.aygfsteel.com/hxweb/articles/123824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hxweb/comments/commentRss/123824.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hxweb/services/trackbacks/123824.html</trackback:ping><description><![CDATA[ <table width="100%"> <tbody> <tr> <td> <p>Hibernate中需è¦classå’Œmapping file, 也就是javaæ–‡äšgå’Œhbm.xmlæ–‡äšgåQŒç”±äºŽHibernateåªæ”¯æŒDMLåQ?䏿”¯æŒDDLåQŒæ‰€ä»¥åœ¨DBä¸­éœ€è¦æœ‰DDL或已¾l存在的数æ®åº“的表。Hibernate中共有三¿U文件与代ç è‡ªåŠ¨ç”ŸæˆåŠŸèƒ½æœ‰å…³åQ?<br />class, mapping file and DDL</p> <p>1. Middlegen <br />是用æ¥ä»ŽDB中已存在的表åQŒç”Ÿæˆç›¸åº”çš„mapping file. å¯ä»¥ä¸‹è²ä¸€ä¸ªè€å¤–çš„middlegen的例å­ã€?<br /><a target="blank">http://sourceforge.net/project/showfiles.php?group_id=40712</a></p> <p>调用Middlegen很简å•,例å­ä¸­çš„middlegen自动生æˆant指ä×o如下 <br /></p> <div id="wmqeeuq" class="quote_title">引用</div> <div id="wmqeeuq" class="quote_div"> <br /><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 />> <br /><hibernate <br />destination="${build.gen-src.dir}" <br />package="${name}.hibernate" <br />/> <br /></middlegen> <br /></div> <p> </p> <p>ç„¶åŽä¼šæœ‰ä¸€ä¸ªGUIåQŒç»™æˆ‘们专门设计å„ç§è¡¨ä¸Žè¡¨ä¹‹é—´çš„关系(一对一åQŒä¸€å¯¹å¤šä»¥åŠå•å‘åŒå‘关系)。需è¦è¯´æ˜Žçš„æ˜¯ï¼Œmiddlegen生æˆçš„ä»£ç æ²¡æœ‰ç›´æŽ¥å†™mapping fileç‰|´»æ€§å¥½åQŒæ‰€ä»¥ç”Ÿæˆçš„mapping file有时˜q˜éœ€è¦æˆ‘们去修改ã€?/p> <p>2. XDoclet <br />它是用æ¥ä»Žjavaæ–‡äšg自动生æˆhbmæ–‡äšg的,ä¸è¿‡æˆ‘们需è¦åœ¨java代ç ä¸­å†™ä¸€äº›è§„定的tagåQŒæ‰èƒ½å¾—到自动生æˆçš„hbmæ–‡äšg. <br /></p> <div id="wmqeeuq" class="code_title">代ç </div> <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> </div> <ol class="dp-xml"> <li id="wmqeeuq" class="alt"> <span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">hibernatedoclet</span> <span>  </span> </span> </li> <li id="wmqeeuq" class=""> <span>          </span> <span id="wmqeeuq" class="attribute">destdir</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"src"</span> <span>  </span> </li> <li id="wmqeeuq" class="alt"> <span>          </span> <span id="wmqeeuq" class="attribute">excludedtags</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"@version,@author,@todo"</span> <span>  </span> </li> <li id="wmqeeuq" class=""> <span>          </span> <span id="wmqeeuq" class="attribute">force</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"true"</span> <span>  </span> </li> <li id="wmqeeuq" class="alt"> <span>          </span> <span id="wmqeeuq" class="attribute">verbose</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"true"</span> <span id="wmqeeuq" class="tag">></span> <span>  </span> </li> <li id="wmqeeuq" class=""> <span>          </span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">fileset</span> <span> </span> <span id="wmqeeuq" class="attribute">dir</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"src"</span> <span id="wmqeeuq" class="tag">></span> <span>  </span> </li> <li id="wmqeeuq" class="alt"> <span>              </span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">include</span> <span> </span> <span id="wmqeeuq" class="attribute">name</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"**/*.java"</span> <span id="wmqeeuq" class="tag">/></span> <span>  </span> </li> <li id="wmqeeuq" class=""> <span>              </span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">exclude</span> <span> </span> <span id="wmqeeuq" class="attribute">name</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"**/Product.java"</span> <span id="wmqeeuq" class="tag">/></span> <span>  </span> </li> <li id="wmqeeuq" class="alt"> <span>          </span> <span id="wmqeeuq" class="tag"></</span> <span id="wmqeeuq" class="tag-name">fileset</span> <span id="wmqeeuq" class="tag">></span> <span>  </span> </li> <li id="wmqeeuq" class=""> <span>          </span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">hibernate</span> <span> </span> <span id="wmqeeuq" class="attribute">version</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"2.0"</span> <span id="wmqeeuq" class="tag">/></span> <span>  </span> </li> <li id="wmqeeuq" class="alt"> <span>    </span> <span id="wmqeeuq" class="tag"></</span> <span id="wmqeeuq" class="tag-name">hibernatedoclet</span> <span id="wmqeeuq" class="tag">></span> <span>  </span> </li> </ol> </div> </div> <script><![CDATA[ender_code();]]></script> <p> </p> <p>3. hbm2java <br />它是用æ¥ä»Žmapping æ–‡äšg生æˆjava代ç çš„工典P¼Œè°ƒç”¨å¾ˆç®€å•ï¼Œåœ¨å‚æ•îC¸­éœ€è¦ç»™å‡ºæ‰€æœ‰çš„hbmæ–‡äšgåQŒå¦‚下: <br /></p> <div id="wmqeeuq" class="code_title">代ç </div> <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> </div> <ol class="dp-xml"> <li id="wmqeeuq" class="alt"> <span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">java</span> <span> </span> <span id="wmqeeuq" class="attribute">classname</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"net.sf.hibernate.tool.hbm2java.CodeGenerator"</span> <span> </span> <span id="wmqeeuq" class="attribute">fork</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"true"</span> <span id="wmqeeuq" class="tag">></span> <span>  </span> </span> </li> <li id="wmqeeuq" class=""> <span>      </span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">classpath</span> <span> </span> <span id="wmqeeuq" class="attribute">refid</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"classpath"</span> <span id="wmqeeuq" class="tag">/></span> <span>  </span> </li> <li id="wmqeeuq" class="alt"> <span>      </span> <span id="wmqeeuq" class="tag"><</span> <span id="wmqeeuq" class="tag-name">arg</span> <span> </span> <span id="wmqeeuq" class="attribute">line</span> <span>=</span> <span id="wmqeeuq" class="attribute-value">"${build.gen-src.dir}/airline/hibernate/*.hbm.xml"</span> <span id="wmqeeuq" class="tag">/></span> <span>  </span> </li> <li id="wmqeeuq" class=""> <span>    </span> <span id="wmqeeuq" class="tag"></</span> <span id="wmqeeuq" class="tag-name">java</span> <span id="wmqeeuq" class="tag">></span> <span>  </span> </li> </ol> </div> </div> <script><![CDATA[ender_code();]]></script> <p> </p> <p>4. SchemaExport <br />如果写好了javaæ–‡äšgå’Œhbmæ–‡äšgåQŒå°±å¯ä»¥ç”¨SchemaExport直接生æˆDDLæ–‡äšgåQŒè°ƒç”¨åŒæ ïL®€å•,åªéœ€åœ¨java代ç ä¸­ï¼ŒåР入如䏋åQ?<br /></p> <div id="wmqeeuq" class="code_title">代ç </div> <div id="wmqeeuq" class="code_div"> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> </div> <ol class="dp-j"> <li id="wmqeeuq" class="alt"> <span> <span>conf = </span> <span id="wmqeeuq" class="keyword">new</span> <span> Configuration()   </span> </span> </li> <li id="wmqeeuq" class=""> <span>     .addClass(a.</span> <span id="wmqeeuq" class="keyword">class</span> <span>)   </span> </li> <li id="wmqeeuq" class="alt"> <span>     .addClass(b.</span> <span id="wmqeeuq" class="keyword">class</span> <span>);   </span> </li> <li id="wmqeeuq" class=""> <span>SchemaExport dbExport = </span> <span id="wmqeeuq" class="keyword">new</span> <span> SchemaExport(conf);   </span> </li> <li id="wmqeeuq" class="alt"> <span>dbExport.setOutputFile(</span> <span id="wmqeeuq" class="string">"myschema.sql"</span> <span>);   </span> </li> <li id="wmqeeuq" class=""> <span>dbExport.create(</span> <span id="wmqeeuq" class="keyword">true</span> <span>, </span> <span id="wmqeeuq" class="keyword">true</span> <span>);   </span> </li> </ol> </div> </div> <script><![CDATA[ender_code();]]></script> <p> </p> <p>从这四ç§è‡ªåŠ¨ç”Ÿæˆå·¥å…·æ¥çœ‹åQ?mapping file, java file and DDLåQŒåªè¦çŸ¥é“ä“Q何一¿Uæ–‡ä»Óž¼Œéƒ½å¯ä»¥å¾—到å¦å¤–两¿Uæ–‡ä»Óž¼Œ <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强大的絋zÀL€§ã€?/p> </td> </tr> </tbody> </table> <br /> <img src ="http://www.aygfsteel.com/hxweb/aggbug/123824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hxweb/" target="_blank">好学蜘蛛</a> 2007-06-13 11:22 <a href="http://www.aygfsteel.com/hxweb/articles/123824.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Hibernateçš„JNDI¾l‘定分æžhttp://www.aygfsteel.com/hxweb/articles/123823.html好学蜘蛛好学蜘蛛Wed, 13 Jun 2007 03:20:00 GMThttp://www.aygfsteel.com/hxweb/articles/123823.htmlhttp://www.aygfsteel.com/hxweb/comments/123823.htmlhttp://www.aygfsteel.com/hxweb/articles/123823.html#Feedback0http://www.aygfsteel.com/hxweb/comments/commentRss/123823.htmlhttp://www.aygfsteel.com/hxweb/services/trackbacks/123823.html

Hibernateçš„JNDIåç§°¾l‘定是在net.sf.hibernate.impl.SessionFactoryObjectFactory½E‹åºé‡Œé¢å®žçŽ°çš„ï¼Œæˆ‘æ¥åˆ†æžä¸€ä¸‹Hibernate的绑定JNDI的过½E‹ï¼š
我们获得SessionFactory一般是˜q™æ ·å†™ä»£ç ï¼š

代ç 
  1. Configuration conf =  new  Configuration().addClass(Cat. class );   
  2. SessionFactory sf = conf.buildSessionFactory();   

首先是new Configuration()创å¾ä¸€ä¸ªConfigurationåQŒåœ¨˜q™ä¸ªæž„造器里题q›è¡Œé…置文äšg(hibernate.properties)的读å–工作,然åŽä¿å­˜åˆîC¸€ä¸ªProperties对象里é¢åŽ»ï¼Œå’ŒJNDI相关的是˜q™ä¸ªå±žæ€§ï¼š

代ç 
  1. hibernate.session_factory_name hibernate/session_factory  

接ç€è°ƒç”¨buildSessionFactory()æ–ÒŽ³•åQŒè¯¥æ–ÒŽ³•‹‚€æŸ¥ä¸€ä¸‹é…¾|®ä¿¡æ¯ï¼Œç„¶åŽè°ƒç”¨SessionFactoryImplçš„ä¸€ä¸ªæž„é€ å™¨ã€‚åœ¨æž„é€ å™¨é‡Œé¢æ³¨æ„下é¢ä¸¤è¡Œä»£ç åQ?/p>

代ç 
  1. name = properties.getProperty(Environment.SESSION_FACTORY_NAME);   
  2. SessionFactoryObjectFactory.addInstance(uuid, name,  this , properties);  

调用了SessionFactoryObjectFactoryçš„addInstanceæ–ÒŽ³•åQŒåƈ且把自èínåQˆSessionFactoryçš„å®žä¾‹ï¼‰ä½œäØ“å‚æ•°ä¼ é€’。最åŽåœ¨addInstanceæ–ÒŽ³•å¯ä»¥çœ‹åˆ°å¦‚下代ç åQ?/p>

代ç 
  1. Context ctx = NamingHelper.getInitialContext(properties);   
  2. NamingHelper.bind(ctx, name, instance);  

instance ž®±æ˜¯SessionFactory的实例,通过è¯ÀLºä»£ç åQŒå¯ä»¥æ¸…楚的看到Hibernate是在conf.buildSessionFactory()的时候通过一¾pÕdˆ—¾cÀL–¹æ³•调用,把创建的SessionFactory实例¾l‘定到酾|®æ–‡ä»Óž¼ˆhibernate.propertiesåQ‰ä¸­ hibernate.session_factory_name属性指定的å称上的åQŒå› æ­¤å¯è§Hibernate自èín是具有JNDI的动æ€ç»‘定功能的。但是Hibernate需è¦èŽ·å¾—ä¸€ä¸ªSessionFactory实例用于¾l‘定åQŒè€Œè¿™ä¸ªSessionFactoryå®žä¾‹éœ€è¦æˆ‘们写代砘q›è¡Œé¢„先创å¾åQŒåƈ且必™åÖM¿è¯è¯¥˜q‡ç¨‹è¦åœ¨æ‰€æœ‰å…¶å®ƒè¦ä»ŽJNDI上获得SessionFactory实例的程åºä¹‹å‰å®Œæˆã€?/p>

因此对于ä»ÖM½•App Serveræ¥è¯´åQŒæˆ‘们都ä¸å¿…åŽÈ®¡JNDIå称的绑定过½E‹ï¼Œåªéœ€è¦ä¿è¯é¢„先创å»ÞZ¸€ä¸ªSessionFactory实例出楞®±å¤Ÿäº†ï¼Œå‰©ä¸‹çš„å·¥ä½?Hibernate会åšçš„。那么如何确ä¿é¢„创å¾SessionFactory实例呢,如果是ServletåQŒå¯ä»¥é…¾|®ä¸€ä¸ªåˆå§‹åŒ–çš„ServletåQŒåªè¦æŠŠ

代ç 
  1. Configuration conf =  new  Configuration().addClass(Cat. class );   
  2. SessionFactory sf = conf.buildSessionFactory();   

˜q™æ ·çš„代ç åŠ ˜q›åŽ»ž®±å¯ä»¥äº†ã€‚如果是包å«EJBçš„çš„å¤æ‚çš„J2EE应用åQŒå¯èƒ½éœ€è¦ä¾é App Server的功能æ¥ä¿è¯é¢„创建SessionFactory实例ã€?/p>


好学蜘蛛 2007-06-13 11:20 å‘表评论
]]>
如何在Weblogic上酾|®Hibernate为JNDI http://www.aygfsteel.com/hxweb/articles/123821.html好学蜘蛛好学蜘蛛Wed, 13 Jun 2007 03:11:00 GMThttp://www.aygfsteel.com/hxweb/articles/123821.htmlhttp://www.aygfsteel.com/hxweb/comments/123821.htmlhttp://www.aygfsteel.com/hxweb/articles/123821.html#Feedback0http://www.aygfsteel.com/hxweb/comments/commentRss/123821.htmlhttp://www.aygfsteel.com/hxweb/services/trackbacks/123821.html

一ã€é¦–å…ˆéœ€è¦æŠŠHibernate 用到的jar包和é…置文äšg都放到Weblogic能够æœçƒ¦åˆ°çš„CLASSPATH路径上。å•å•这一步就有很多äh很迷茫,其实åŽÖM»”¾l†çœ‹çœ‹Weblogicçš„å¯åŠ¨è„šæœ¬æ–‡ä»¶startWeblogic.cmdå’ŒstartWLS.cmdåQŒæˆ‘惛_¤§éƒ¨åˆ†äººéƒ½çŸ¥é“该怎么é…置了ã€?/p>

我机器上的有个Hibernate的项目,在D:\test\oracle目录下,该目录下的结构是åQ?

代ç 
  1. D:\test\oracle\lib 攄¡½®hibernate的所有jaråŒ?  
  2. D:\test\oracle\src 攄¡½®æºä»£ç ?  
  3. D:\test\oracle\classes ¾~–译好的代ç å’Œhibernate的酾|®æ–‡ä»?hibernate.properties, log4j.properties, cache.ccf)  

çŽ°åœ¨éœ€è¦æŠŠD:\test\oracle\lib目录下那些jaræ–‡äšgå’ŒD:\test\oracle\classes目录都放¾|®åˆ°Weblogicçš?CLASSPATH里é¢åŽ»ï¼Œæ‰€ä»¥ä¿®æ”¹mydomain里é¢çš„Weblogicå¯åŠ¨è„šæœ¬startWeblogic.cmdåQŒåœ¨å¯åЍWeblogic之å‰åQŒæ’入设¾|®CLASSPATH的命令,如下åQ?/p>

代ç 
  1. @rem  set hibernate classpath   
  2. set HIBERNATE_LIB=D:\test\oracle\lib   
  3. set HIBERNATE_CLASSES=D:\test\oracle\classes   
  4. 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- 1.2 . 8 .jar;%HIBERNATE_LIB%\odmg.jar;%HIBERNATE_CLASSES%;%CLASSPATH%  

下é¢ä¸€è¡Œï¼Œž®±æ˜¯æœ¬æ¥è„šæœ¬é‡Œé¢çš„å¯åŠ¨å‘½ä»¤ï¼š

代ç 
  1. @rem  Call Weblogic Server   
  2. call  "C:\bea\weblogic700\server\bin\startWLS.cmd"   

二ã€åœ¨Weblogic上酾|?Oracleæ•°æ®åº“çš„˜qžæŽ¥æ± ã€‚这一步本æ¥å’ŒHibernateæ— å…³åQŒä½†æ˜¯å¦‚果你惌™¦ä½¿ç”¨EJBåQŒæƒ³è¦ä‹É用JTAåQŒé‚£ä¹ˆå¿…™åÖM‹É用Weblogicæä¾›çš„连接池åQŒè€Œä¸èƒ½ä‹É用Hibernate自带的连接池åQŒæˆ–者其它第三方˜qžæŽ¥æ± ï¼Œå¦åˆ™å®¹å™¨ž®†æ— æ³•ç®¡ç†æ•°æ®åº“事务。这一步很½Ž€å•,ž®±æ˜¯åœ¨Weblogic Console里é¢é…ç½®Connection Poolå’ŒTxData SourceåQŒæˆ‘çš„Tx DataSourceå–å¿UîCؓ“mypoolâ€?/p>

三ã€ä¿®æ”¹hibernate.properties。ä‹É用Weblogic的连接池åQŒè€Œä¸æ˜¯è‡ªå¸¦çš„˜qžæŽ¥æ± ã€‚我修改的是D:\test\oracle\classes\hibernate.propertiesåQŒå¢žåŠ å¦‚ä¸‹è¡ŒåQ?

代ç 
  1. hibernate.dialect net.sf.hibernate.dialect.OracleDialect   
  2. hibernate.connection.datasource mypool   
  3. hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider   
  4. hibernate.session_factory_name hibernate.session_factory  

æ³¨æ„æœ€åŽä¸€è¡Œï¼Œ˜q™æ˜¯ä½¿ç”¨ Hibernateæ¥ç»‘定JNDI¾l™JNDIèµïLš„åç§°åQŒæœ¬æ¥åº”该是hibernate/session_factoryåQŒä½†æ˜¯Weblogicè¦æ±‚æ”¹äØ“. åøP¼Œä¸è¿‡åœ¨ç¨‹åºä¸­lookup的时候还是è¦å†™hibernate/session_factory

å¦å¤–æåˆ°ä¸€ç‚¹çš„æ˜?

代ç 
  1. hibernate.jdbc.fetch_size  50   
  2. hibernate.jdbc.batch_size  25   

分别å¯ÒŽ•°æ®åº“查询和æ’入有很大的性能影å“åQŒè°ƒèŠ‚è¿™ä¸¤ä¸ªé€‰é¡¹å¯ä»¥å¾—到最好的性能ã€?/p>

ä¸ÞZº†ä¿è¯SessionFactory实例的预创å¾åQŒä‹É用Weblogicçš„T3StartUpDef接å£åˆ›å¾ä¸€ä¸ªStartUp¾c»ï¼Œåœ¨Weblogicå¯åŠ¨çš„æ—¶å€™è¿è¡Œï¼š

代ç 
  1. package  com.fankai;   
  2.   
  3. import  java.util.Hashtable;   
  4. import  weblogic.common.T3StartupDef;   
  5. import  weblogic.common.T3ServicesDef;   
  6. import  net.sf.hibernate.cfg.Configuration;   
  7. import  net.sf.hibernate.SessionFactory;   
  8.   
  9. public   class  HibernateStartUp  implements  T3StartupDef {   
  10.   
  11.    public   void  setServices(T3ServicesDef services) {}   
  12.   
  13.    public  String startup(String name, Hashtable args)  throws  Exception {   
  14.     Configuration conf =  new  Configuration().addClass(Cat. class );   
  15.     SessionFactory sf = conf.buildSessionFactory();    
  16.      return   "Hibernate Startup completed successfully" ;   
  17.   }    
  18. }  

代ç éžå¸¸½Ž€å•,其实ž®±æ˜¯¼‹®ä¿é¢„å…ˆ˜q行

代ç 
  1. Configuration conf =  new  Configuration().addClass(Cat. class );   
  2. SessionFactory sf = conf.buildSessionFactory();   

把sf创å¾å‡ºæ¥åQŒè€ŒHibernate会自行调用一¾pÕdˆ—¾cÀL–¹æ³•,把sf¾l‘定到Weblogic的的JNDI树下的hibernate/session_factory路径中ã€?/p>

4ã€ç¼–译HibernateStartUp.java
¾~–译˜q™ä¸ªæºä»£ç çš„æ—¶å€™éœ€è¦æ³¨æ„çš„æ˜¯ï¼Œè¦æŠŠweblogic.jar包和Hibernate所有的相关包和é…置文äšg导入。我是把˜q™ä¸ªæºä»£ç æ”¾åˆ°D:\test\oracle\src目录下的åQŒç”¨æ—©å·²¾~–写好的ant脚本˜q行一下就¾~–译好了åQŒåƈ且编译好çš?classæ–‡äšg被放¾|®åˆ°D:\test\oracle\classes目录下,该目录已¾l被加入到Weblogicçš„CLASSPATH里é¢åQŒå› æ­¤å¾ˆçœäº‹ã€?/p>

五ã€é…¾|®StartUp¾c?
å¯åЍWeblogicåQŒæ‰“å¼€Console控制åŽÍ¼Œåœ¨å·¦è¾¹çš„Applet树上扑ֈ°StartUp & ShutdownåQŒç„¶åŽåœ¨åŒ™¾¹ç‚¹å‡»â€œConfigure a new Startup Class...â€ï¼Œåœ¨Name框里é¢éšä¾¿å¡«å†™ï¼Œåœ¨ClassName里é¢å¡«å†™ä½ ç¼–写的StartUp¾c»ï¼Œæˆ‘填写的æ˜?com.fankai.HibernateStartUp åQŒç„¶åŽç‚¹å‡ Z€œApplyâ€ã€‚ç„¶åŽåˆ‡æ¢åˆ°Target˜q™é€‰é¡¹å¡ï¼Œåœ¨Target-Server左边çš?Avaiable框里é¢é€‰æ‹©â€œmyserverâ€ï¼Œç‚¹å‡»å³ç®­å¤ß_¼ŒæŠŠå®ƒæŒªåˆ°åŒ™¾¹çš„“Chosenâ€æ¡†é‡Œé¢åŽ»ï¼Œæœ€åŽå†ç‚¹å‡»ä¸€ä¸‹â€œApply"按钮。如果此æ—?Weblogicçš„DOS½H—å£é‡Œé¢æ²¡æœ‰å‡ºé”™ä¿¡æ¯åQŒé‚£ä¹ˆåº”该已¾lé…¾|®æˆåŠŸäº†ã€?/p>

å…­ã€çŽ°åœ¨å…³é—­WeblogicåQŒå†é‡æ–°˜q行 startWelogic.cmdåQŒå¯åЍWeblogicåQŒè§‚察DOS½H—å£çš„输å‡ÞZ¿¡æ¯ï¼Œå¯ä»¥çœ‹åˆ°Hibernateçš„åˆå§‹åŒ–ä¿¡æ¯ä¸€å±å±çš„æ»šåŠ¨è¾“å‡ºï¼Œè¯æ˜Žå·²ç»é…ç½®æˆåŠŸã€‚çŽ°åœ¨å†æ‰“å¼€Console控制åŽÍ¼Œç‚¹å‡»å·¦è¾¹Applet树中的Servers|myserveråQŒç„¶åŽå¯ä»¥åœ¨åŒ™¾¹æœ€ä¸‹é¢æ‰‘Öˆ°â€œView JNDI tree â€ï¼Œç‚¹å‡»å®ƒï¼Œä¼šæ‰“开一个æµè§ˆå™¨½H—å£åQŒæ˜¾½CºJNDI树,˜q™æ—¶ä½ å¯ä»¥çœ‹åˆîC¸€ä¸ªå¿UîCØ“hibernateçš„JNDI对象åQŒåœ¨å·¦è¾¹çš„Applet树中点击它,看å³è¾¹çš„详细信æ¯åQŒæˆ‘的机器上的信æ¯å¦‚下:

代ç 
  1. Bind Name: hibernate   
  2. Object Class: net.sf.hibernate.impl.SessionFactoryImpl   
  3. Object Hash Code:  454492   
  4. Object To String: net.sf.hibernate.impl.SessionFactoryImpl @6ef5c   

完全正确åQ?
最åŽä½ å¯ä»¥éšæ„在EJB或者Servlet/JSP里é¢ä½¿ç”¨JND查找æ¥èŽ·å¾—SessionFactory了ã€?

例如åQ?/p>

代ç 
  1. Context ctx = new InitialContext();   
  2. SessionFactory sf = (SessionFactory) ctx.lookup("hibernate/session_factory");  

在其它App Server上如何酾|®ï¼Œæœ¬è´¨ä¸Šå’ŒWeblogic是一æ ïLš„åQŒåªæ˜¯ä½ è¦ç¡®ä¿åœ¨å…¶å®ƒ½E‹åº˜q行之å‰åQŒå…ˆæŠ?/p>

代ç 
  1. Configuration conf = new Configuration().addClass(Cat.class);   
  2. SessionFactory sf = conf.buildSessionFactory();   

˜q™ä¸¤è¡Œä»£ç è¿è¡Œä¸€éå°±OKäº?/p>



好学蜘蛛 2007-06-13 11:11 å‘表评论
]]>
™åµé¢åµŒå…¥åœ¨çº¿èŠå¤© (prototype) http://www.aygfsteel.com/hxweb/articles/123819.html好学蜘蛛好学蜘蛛Wed, 13 Jun 2007 03:07:00 GMThttp://www.aygfsteel.com/hxweb/articles/123819.htmlhttp://www.aygfsteel.com/hxweb/comments/123819.htmlhttp://www.aygfsteel.com/hxweb/articles/123819.html#Feedback0http://www.aygfsteel.com/hxweb/comments/commentRss/123819.htmlhttp://www.aygfsteel.com/hxweb/services/trackbacks/123819.html 问题 : æä¾›¾l™B/S ¾l“构一个实时的˜q行展现
解决:   prototype 的 Ajax.PeriodicalUpdater 更新
            prototype 的  Â?Ajax.Request è¯­å¥æäº¤
            action 语å¥çš„组¾l‡å±•çŽ?br />
http://www.aygfsteel.com/Files/Good-Game/take.rar

    没有lib 大家å¯ä»¥ž®±åŠ  struct 相关 lib ž®±å¯ä»¥äº†

说明: 
      

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
          
<SCRIPT language="Javascript" src="prototype1.5.0.js"></SCRIPT>
  
</head>
  
  
<body onload="Said()"> 
      
<INPUT id='name1' type="text" size="10" value="误‚¾“å…¥åå­? onfocus="if($('name1').value=='误‚¾“å…¥åå­?) $('name1').innerText='' " />
      
<INPUT id='text1' type="text" onkeydown="if(event.keyCode==13){event.keyCode=0; onb();}"/>
      
<INPUT id='button1' type="button" value="test" onclick='onb()' />
  
</body>
  
<div id='div1'/>
</html>
<script type="text/javascript"  >
        //语å¥å¼‚æ­¥æäº¤¾l™æœåС噍 Ajax.Request
    
function onb(){                                         
      
if($('name1').value=='误‚¾“å…¥åå­? || $('name1').value==''){
          window.alert('误‚¾“å…¥åå­?);
          
return 
      }

      
      
var url = 'http://192.168.1.130:7000/xxs/mySaid.do?name='+$F('name1')+'&take='+$F('text1');                
      new Ajax.Request(
        url,
        
{
            method: 'get',
            onComplete: action              
        }
);
        
        $('name1').readOnly 
= true
        $('name1').style.background 
= 'lightblue'
        $('text1').innerText
='' 
    }

       //局部刷æ–?òq¶æå?语å¥
    
function Said(){
        
var url = 'http://192.168.1.130:7000/xxs/mySaid.do';  
        new Ajax.PeriodicalUpdater(
            'div1',
            url,
            
{
                method: 'get',
                onComplete: SumSaid,
                evalScripts: 
true,
                frequency: 
1,
                decay: 
1
            }

        );
    }

       //展现
    
function SumSaid(req){
        $('div1').innerHTML 
= req.responseText;
    }


    
function action(req){
    }

    
</script>
    

Action
   private static int SIZE = 30 ;
     private List list = new ArrayList();

    
public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) 
{
        String take 
= request.getParameter("take") ;
        String name 
= request.getParameter("name") ;
        response.addHeader(
"Cache-Control","no-cache"); 
        
        request.setAttribute(
"said",DueiLie(name,take));

        
try {
            request.setCharacterEncoding(
"gb2312");
            response.setCharacterEncoding(
"gb2312");
        }
 catch (Exception e) {
        }


        
return mapping.findForward("list");
    }

     
        //语å¥çš„组¾l?/font>
    
public String DueiLie(String name,String take){
        
        StringBuffer strb  
= new StringBuffer();
        
if(name==null||take==null);
        
else{
            strb.append( name ).append(
" : ").append(take).append("</br>") ;
            
if(list.size()==SIZE){
                list.remove(list.get(
0));
                list.add(strb.toString() );
            }
else{
                list.add( strb.toString() );
            }

        }

        StringBuffer takes 
= new StringBuffer();
        Iterator it 
= list.iterator();
        
while(it.hasNext()){
            takes.insert( 
0,(String)it.next() );
        }

        
return takes.toString();
    }

jsp ( list ) ä¸­æ–‡å¤„ç† jsp ž®×ƒ¸€å¥è¯
<%= new String(((String)request.getAttribute("said")).getBytes("iso8859-1"),"GBK") %>



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º άÎ÷| ¸¢ÁêÇø| ¡²ýÏØ| Õ´»¯ÏØ| ¹þÃÜÊÐ| ÔªÑôÏØ| µÇ·âÊÐ| ÑÓ´¨ÏØ| ¾°¹È| »ÆÆÖÇø| ÂåÄÏÏØ| ·áÌ¨Çø| ¸ß°²ÊÐ| ÀÖ²ýÊÐ| Öз½ÏØ| ·À³Ç¸ÛÊÐ| ¶ë±ß| ͬÐÄÏØ| Âí¶û¿µÏØ| ÖζàÏØ| ·ïÇìÏØ| ÓݳÇÏØ| º×·åÏØ| ¦·³ÏØ| ÉÌÂåÊÐ| Ð˹úÏØ| ±¦ÇåÏØ| ¼Ó²éÏØ| Ëì²ýÏØ| ÓÀÉÆÏØ| ×ÔÖÎÏØ| ¼ÎÒñÏØ| ÷ÖÝÊÐ| ÆÕ¶ý| ÐÞË®ÏØ| ÓÀÐËÏØ| ½ðÉ³ÏØ| ³ÇÊÐ| »´ÄÏÊÐ| Ó¢µÂÊÐ| »¯ÖÝÊÐ|