??xml version="1.0" encoding="utf-8" standalone="yes"?>日本福利在线观看,国产精品男女,中文字幕久久久http://www.aygfsteel.com/michaellee/category/38542.htmljava人生?..MichaelLeezh-cnWed, 25 Mar 2009 16:23:08 GMTWed, 25 Mar 2009 16:23:08 GMT60hibernate持久层操?/title><link>http://www.aygfsteel.com/michaellee/articles/261976.html</link><dc:creator>MichaelLee</dc:creator><author>MichaelLee</author><pubDate>Wed, 25 Mar 2009 16:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/michaellee/articles/261976.html</guid><wfw:comment>http://www.aygfsteel.com/michaellee/comments/261976.html</wfw:comment><comments>http://www.aygfsteel.com/michaellee/articles/261976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/michaellee/comments/commentRss/261976.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/michaellee/services/trackbacks/261976.html</trackback:ping><description><![CDATA[Session.get/load的区别:<br />       1.如果未能发现W合条g的记录,getҎq回nullQ而loadҎ会抛Z个ObejctNotFoundException?br />       2.LoadҎ可返回实体的代理cȝ型,而getҎ永远直接q回实体cR?br />       3.LoadҎ可以充分利用内部~存和二U缓存中现有数据Q而getҎ则仅仅在内部~存中进行数据查找,如没有发现对应数据,越q二U缓存,直接调用SQL完成数据d? <p> </p> <p> </p> <hr /> <br />       Session.find/iterate的区别:<br />       findҎ执行Select SQL从数据库中获得所有符合条件的记录q构造相应的实体对象Q实体对象构建完毕之后,将其纳入缓存。它对缓存只写不读,因此无法利用~存?br />       iterateҎ首先执行一条Select SQL以获得所有符合查询条件的数据idQ随卻IiterateҎ首先在本地缓存中Ҏid查找对应的实体对象是否存在,如果~存中已l存在对应的数据Q则直接以此数据对象作ؓ查询l果Q如果没有找刎ͼ再执行相应的Select语句获得对应的库表记录(iterateҎ如果执行了数据库d操作q构Z完整的数据对象,也会其查询l果U_~存Q? <p> </p> <p> </p> <hr /> <br />       Query Cache产生作用的情况:<br />       1.完全相同的Select SQL重复执行?br />       2.在两ơ查询之_此Select SQL对应的库表没有发生过改变? <p> </p> <p> </p> <hr /> <br />       Session.saveҎ的执行步骤:<br />       1.在Session内部~存中寻扑־保存对象。内部缓存命中,则认为此数据已经保存Q执行过insert操作Q,实体对象已经处于Persistent状态,直接q回?br />       2.如果实体cdClifecycle接口Q则调用待保存对象的onSaveҎ?br />       3.如果实体cdCvalidatable接口Q则调用其validate()Ҏ?br />       4.调用对应拦截器的Interceptor.onSaveҎQ如果有的话Q?br />       5.构造Insert SQLQƈ加以执行?br />       6.记录插入成功Quser.id属性被讑֮为insert操作q回的新记录id倹{?br />       7.user对象攑օ内部~存?br />       8.最后,如果存在U联关系Q对U联关系q行递归处理? <p> </p> <p> </p> <hr /> <br />       Session.updateҎ的执行步骤:<br />       1.Ҏ待更新实体对象的KeyQ在当前session的内部缓存中q行查找Q如果发玎ͼ则认为当前实体对象已l处于Persistent状态,q回?br />       2.初始化实体对象的状态信息(作ؓ之后脏数据检查的依据Q,q将其纳入内部缓存。注意这里Session.updateҎ本nq没有发送Update SQL完成数据更新操作QUpdate SQL在之后的Session.flushҎ中执行(Transaction.commit在真正提交数据库事务之前会调用Session.flushQ? <p> </p> <p> </p> <hr /> <p> </p> <p>      Session.saveOrUpdateҎ的执行步骤:<br />       1.首先在Session内部~存中进行查找,如果发现则直接返回?br />       2.执行实体cd应的Interceptor.isUnsavedҎQ如果有的话Q,判断对象是否为未保存状态?br />       3.Ҏunsaved-value判断对象是否处于未保存状态?br />       4.如果对象未保存(Transient状态)Q则调用saveҎ保存对象?br />       5.如果对象为已保存QDetached状态)Q调用updateҎ对象与Session重新兌?/p> <img src ="http://www.aygfsteel.com/michaellee/aggbug/261976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/michaellee/" target="_blank">MichaelLee</a> 2009-03-26 00:09 <a href="http://www.aygfsteel.com/michaellee/articles/261976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate实体对象生命周期Transient/Persistent/Detachedhttp://www.aygfsteel.com/michaellee/articles/261975.htmlMichaelLeeMichaelLeeWed, 25 Mar 2009 16:08:00 GMThttp://www.aygfsteel.com/michaellee/articles/261975.htmlhttp://www.aygfsteel.com/michaellee/comments/261975.htmlhttp://www.aygfsteel.com/michaellee/articles/261975.html#Feedback0http://www.aygfsteel.com/michaellee/comments/commentRss/261975.htmlhttp://www.aygfsteel.com/michaellee/services/trackbacks/261975.html       1.TransientQ自q态)
      此时的实体对象和数据库中的记录无兌Q只是一个普通的JavaBean?br />       2.PersistentQ持久状态)
      此时的实体对象和数据库中的记录有兌Q其变更由Hibernate固化到数据库中。该实体对象处于由Hibernate框架所理的状态?br />       3.DetachedQ游ȝ态)
      处于Persistent状态的对象Q其对应的Session实例关闭之后Q那么,此对象就处于"Detached"状态。Detached状态和Transient状态的区别在于Detached状态的对象可以再次与某个Session实例相关联而成为Persistent对象?br />
      从实体对象是否被U_Hibernate实体理容器的角度,Transient和Detached状态的实体对象可以l称为VOQValue ObjectQ,而被理的实体对象称为POQPersistent ObjectQ。两者的区别Q?br />       1.VO是相对独立的实体对象Q处于非理状态?br />       2.PO是HibernateU_其实体管理容器(Entity MapQ的对象Q它代表了与数据库中某条记录对应的Hibernate实体QPO的变化在事务提交时将反映到实际数据库中?br />       3.如果一个PO与其对应的Session实例分离Q那么此Ӟ它又会变成一个VO?br />
      下图是我ȝ实体对象生命周期的状态{换图Q?br />
vopolife.JPG

MichaelLee 2009-03-26 00:08 发表评论
]]>
hibernate实体对象生命周期Transient/Persistent/Detachedhttp://www.aygfsteel.com/michaellee/articles/261973.htmlMichaelLeeMichaelLeeWed, 25 Mar 2009 16:04:00 GMThttp://www.aygfsteel.com/michaellee/articles/261973.htmlhttp://www.aygfsteel.com/michaellee/comments/261973.htmlhttp://www.aygfsteel.com/michaellee/articles/261973.html#Feedback0http://www.aygfsteel.com/michaellee/comments/commentRss/261973.htmlhttp://www.aygfsteel.com/michaellee/services/trackbacks/261973.html       1.TransientQ自q态)
      此时的实体对象和数据库中的记录无兌Q只是一个普通的JavaBean?br />       2.PersistentQ持久状态)
      此时的实体对象和数据库中的记录有兌Q其变更由Hibernate固化到数据库中。该实体对象处于由Hibernate框架所理的状态?br />       3.DetachedQ游ȝ态)
      处于Persistent状态的对象Q其对应的Session实例关闭之后Q那么,此对象就处于"Detached"状态。Detached状态和Transient状态的区别在于Detached状态的对象可以再次与某个Session实例相关联而成为Persistent对象?br />
      从实体对象是否被U_Hibernate实体理容器的角度,Transient和Detached状态的实体对象可以l称为VOQValue ObjectQ,而被理的实体对象称为POQPersistent ObjectQ。两者的区别Q?br />       1.VO是相对独立的实体对象Q处于非理状态?br />       2.PO是HibernateU_其实体管理容器(Entity MapQ的对象Q它代表了与数据库中某条记录对应的Hibernate实体QPO的变化在事务提交时将反映到实际数据库中?br />       3.如果一个PO与其对应的Session实例分离Q那么此Ӟ它又会变成一个VO?br />
      下图是我ȝ实体对象生命周期的状态{换图Q?br />
vopolife.JPG

MichaelLee 2009-03-26 00:04 发表评论
]]>
վ֩ģ壺 | | | | ں| | | ͼƬ| | | | | ƽ̶| | п| | ͼľ| Ȫ| ƽ| | γ| ±| Ͼ| ˹| | | ͷ| ԭ| | | ʡ| | ͼʲ| | ٷ| | | | | ¡| |