锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 ,一本色道久久综合亚洲精品高清,色久悠悠婷婷综合在线亚洲http://m.tkk7.com/alex/category/16525.html涓嶆眰澶氬緱,鍙眰涓寰? about java,hibernate,spring,design,database,linux,etc. <br/><br/> 鏈榪戝叧蹇冪殑鍐呭鍏抽敭瀛?web蹇熷紑鍙戞柟妗堬紝寤烘ā,workshop studio,Ajax zh-cnSun, 13 May 2007 10:31:01 GMTSun, 13 May 2007 10:31:01 GMT60綆鍗曞氨鏄編 -- 綆鍖杊ibernate,綆鍖杁aohttp://m.tkk7.com/alex/archive/2007/05/13/117118.htmlAlexAlexSun, 13 May 2007 08:41:00 GMThttp://m.tkk7.com/alex/archive/2007/05/13/117118.htmlhttp://m.tkk7.com/alex/comments/117118.htmlhttp://m.tkk7.com/alex/archive/2007/05/13/117118.html#Feedback1http://m.tkk7.com/alex/comments/commentRss/117118.htmlhttp://m.tkk7.com/alex/services/trackbacks/117118.html闃呰鍏ㄦ枃

Alex 2007-05-13 16:41 鍙戣〃璇勮
]]>
[zt] Hibernate+Spring 瀵笵AO鐨勫鐞嗗疄鍒?http://m.tkk7.com/alex/archive/2007/01/25/95839.htmlAlexAlexThu, 25 Jan 2007 01:24:00 GMThttp://m.tkk7.com/alex/archive/2007/01/25/95839.htmlhttp://m.tkk7.com/alex/comments/95839.htmlhttp://m.tkk7.com/alex/archive/2007/01/25/95839.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/95839.htmlhttp://m.tkk7.com/alex/services/trackbacks/95839.html闃呰鍏ㄦ枃

Alex 2007-01-25 09:24 鍙戣〃璇勮
]]>
MiddleGen涓厤緗甴ibernate鐨刴any to many灞炴?/title><link>http://m.tkk7.com/alex/archive/2006/12/07/86159.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Thu, 07 Dec 2006 12:26:00 GMT</pubDate><guid>http://m.tkk7.com/alex/archive/2006/12/07/86159.html</guid><wfw:comment>http://m.tkk7.com/alex/comments/86159.html</wfw:comment><comments>http://m.tkk7.com/alex/archive/2006/12/07/86159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/alex/comments/commentRss/86159.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/alex/services/trackbacks/86159.html</trackback:ping><description><![CDATA[key words: MiddleGen,hibernate,many to many,澶氬澶?br /><br />濡傛灉浣犳湁濡備笅琛ㄧ粨鏋?br /><br />user(user_id,user_name)<br />role(role_id,role_name)<br /><br />user_role(id,user_id,role_id)<br /><br />閭d箞榛樿MiddleGen鐢熸垚鐨勬槸涓や釜涓瀵瑰錛屼絾鎴戜滑鏇村鐨勬儏鍐墊槸鐢╩any to many<br /><br />闇瑕佷慨鏀筸iddlegen鐨刡uild.xml鏂囦歡<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">many2many</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">tablea聽</span><span style="color: rgb(255, 0, 0);">generate</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);">聽name</span><span style="color: rgb(0, 0, 255);">="user"</span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">jointable聽</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="user_role"</span><span style="color: rgb(255, 0, 0);">聽generate</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">tableb聽</span><span style="color: rgb(255, 0, 0);">generate</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);">聽name</span><span style="color: rgb(0, 0, 255);">="role"</span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">many2many</span><span style="color: rgb(0, 0, 255);">></span></div><br /><img src ="http://m.tkk7.com/alex/aggbug/86159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/alex/" target="_blank">Alex</a> 2006-12-07 20:26 <a href="http://m.tkk7.com/alex/archive/2006/12/07/86159.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate鐨凢etchhttp://m.tkk7.com/alex/archive/2006/12/01/84808.htmlAlexAlexFri, 01 Dec 2006 05:01:00 GMThttp://m.tkk7.com/alex/archive/2006/12/01/84808.htmlhttp://m.tkk7.com/alex/comments/84808.htmlhttp://m.tkk7.com/alex/archive/2006/12/01/84808.html#Feedback2http://m.tkk7.com/alex/comments/commentRss/84808.htmlhttp://m.tkk7.com/alex/services/trackbacks/84808.html鎴戞兂鍛婅瘔鍚勪綅鐨勬槸錛屾帉鎻ibernate鍙兘姣斾綘棰勬湡鐨勯毦澶氫簡錛屽綋浣犺交鏉劇殑鍛婅瘔鎴戯紝hibernate寰堢畝鍗曠殑鏃跺欒鏄綘鑷繁澶氬弽鐪佷簡. 錛堝彧鏈変竴縐嶆儏鍐典緥澶栵紝浣犳槸涓涓墰浜猴級

濂戒簡錛屼竴涓紩瀛愬簾璇濋偅涔堝錛屽叾瀹炰粖澶╁彧鏄兂鍏堣涓璇磆ibernate閲岀殑Fetch鐨勪綔鐢?

澶у閮界煡閬擄紝鍦╤ibernate閲屼負浜嗘ц兘鑰冭檻錛屽紩榪涗簡lazy鐨勬蹇碉紝榪欓噷鎴戜滑浠arent鍜孋hild涓烘ā鍨嬫潵璇存槑錛?br />
publicclass聽Parent聽implements聽Serializable聽{

聽聽聽聽
/**聽identifier聽field聽*/
聽聽聽聽
private聽Long聽id;

聽聽聽聽
/**聽persistent聽field聽*/
聽聽聽聽
private聽List聽childs;

聽聽聽聽
//skip聽all聽getter/setter聽method

聽聽
}聽聽



publicclass聽Child聽implements聽Serializable聽{

聽聽聽聽
/**聽identifier聽field聽*/
聽聽聽聽
private聽Long聽id;

聽聽聽聽
/**聽persistent聽field聽*/
聽聽聽聽
private聽net.foxlog.model.Parent聽parent;

聽聽聽 //skip all getter/setter method

}

鍦ㄦ垜浠煡璇arent瀵硅薄鐨勬椂鍊欙紝榛樿鍙湁Parent鐨勫唴瀹癸紝騫朵笉鍖呭惈childs鐨勪俊鎭紝濡傛灉鍦≒arent.hbm.xml閲岃緗甽azy="false"鐨勮瘽鎵嶅悓鏃跺彇鍑哄叧鑱旂殑鎵鏈塩hilds鍐呭.

闂鏄垜鏃㈡兂瑕乭ibernate榛樿鐨勬ц兘鍙堟兂瑕佷復鏃剁殑鐏墊椿鎬ц鎬庝箞鍔烇紵聽 榪欏氨鏄痜etch鐨勫姛鑳姐傛垜浠彲浠ユ妸fetch涓巐azy="true"鐨勫叧緋葷被姣斾負浜嬪姟褰撲腑鐨勭紪紼嬪紡浜嬪姟涓庡0鏄庡紡浜嬪姟,涓嶅お鍑嗙‘錛屼絾鏄ぇ姒傛槸榪欎釜鎰忔濄?br />
鎬誨鹼紝fetch灝辨槸鍦ㄤ唬鐮佽繖涓灞傜粰浣犱竴涓富鍔ㄦ姄鍙栧緱鏈轟細.

Parent聽parent聽=聽(Parent)hibernateTemplate.execute(new聽HibernateCallback()聽{
聽聽聽聽聽聽聽聽聽聽聽聽
public聽Object聽doInHibernate(Session聽session)聽throws聽HibernateException,聽SQLException聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Query聽q聽
=聽session.createQuery(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
"from聽Parent聽as聽parent聽"+
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
"聽left聽outer聽join聽fetch聽parent.childs聽"+
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
"聽where聽parent.id聽=聽:id"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽q.setParameter(
"id",new聽Long(15));
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
return聽(Parent)q.uniqueResult();
聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽});

聽聽聽聽聽聽聽聽Assert.assertTrue(parent.getChilds().size()聽
>0);


浣犲彲浠ュ湪lazy="true"鐨勬儏鍐典笅鎶奻etch鍘繪帀錛屽氨浼氭姤寮傚父. 褰撶劧錛屽鏋渓azy="false"灝變笉闇瑕乫etch浜?br />

鏈変竴涓棶棰?浣跨敤Fetch浼氭湁閲嶅璁板綍鐨勭幇璞″彂鐢?鎴戜滑鍙互鐞嗚В涓篎etch瀹為檯涓婁笉鏄負Parent鏈嶅姟鐨?鑰屾槸涓篊hild鏈嶅姟鐨?鎵浠ョ洿鎺ュ彇Parent浼氭湁涓嶅尮閰嶇殑闂.



鍙傝冧竴涓嬩笅闈㈢殑榪欑瘒鏂囩珷
Hibernate闆嗗悎鍒濆鍖?/a>

======================================================================

update:浠ヤ笂鏈変簺緇撹閿欒錛屽疄闄呬笂鍦╤ibernate3.2.1鐗堟湰涓嬫祴璇曪紝鍙互涓嶅嚭鐜伴噸澶嶈褰曪紝

publicvoid聽testNPlusOne()聽throws聽Exception{
聽聽聽聽聽聽聽聽List聽list聽
=聽(List)hibernateTemplate.execute(new聽HibernateCallback()聽{
聽聽聽聽聽聽聽聽聽聽聽聽
public聽Object聽doInHibernate(Session聽session)聽throws聽HibernateException,聽SQLException聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Query聽q聽
=聽session.createQuery(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
"select聽distinct聽p聽from聽net.foxlog.model.Parent聽p聽inner聽join聽fetch聽p.childs"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
return聽q.list();
聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽});

聽聽聽聽聽聽聽聽
//((Parent)(list.get(0))).getChilds();
聽聽聽聽聽聽聽聽System.out.println("list聽size聽=聽"+聽list.size());
聽聽聽聽聽聽聽聽
for(int聽i=0;i<list.size();i++){
聽聽聽聽聽聽聽聽聽聽聽聽Parent聽p聽
=聽(Parent)list.get(i);
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
"===parent聽=聽"+聽p);
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
"===parent's聽child's聽length聽=聽"+聽p.getChilds().size());
聽聽聽聽聽聽聽聽}

聽聽聽聽}


鎵撳嵃緇撴灉濡備笅:
Hibernate:聽select聽distinct聽parent0_.id聽as聽id2_0_,聽childs1_.id聽as聽id0_1_,聽childs1_.parent_id聽as聽parent2_0_1_,聽childs1_.parent_id聽as聽parent2_0__,聽childs1_.id聽as聽id0__聽from聽parent聽parent0_聽inner聽join聽child聽childs1_聽on聽parent0_.id=childs1_.parent_id
list聽size聽
=3
===parent聽=聽net.foxlog.model.Parent@1401d28[id=14]
===parent's聽child's聽length聽=1
===parent聽=聽net.foxlog.model.Parent@14e0e90[id=15]
===parent's聽child's聽length聽=2
===parent聽=聽net.foxlog.model.Parent@62610b[id=17]
===parent's聽child's聽length聽=3

鍙﹀錛屽鏋滅敤open session in view妯″紡鐨勮瘽涓鑸笉鐢╢etch,浣嗛鍏堟帹鑽恌etch,濡傛灉闈炵敤鐨勮瘽鍥犱負鏈塏+1鐨勭幇璞★紝鎵浠ュ彲浠ョ粨鍚坆atch妯″紡鏉ユ敼鍠勪笅鎬ц兘.




Alex 2006-12-01 13:01 鍙戣〃璇勮
]]>
[zt]hibernate澶嶅悎涓婚敭http://m.tkk7.com/alex/archive/2006/11/09/80231.htmlAlexAlexThu, 09 Nov 2006 11:22:00 GMThttp://m.tkk7.com/alex/archive/2006/11/09/80231.htmlhttp://m.tkk7.com/alex/comments/80231.htmlhttp://m.tkk7.com/alex/archive/2006/11/09/80231.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/80231.htmlhttp://m.tkk7.com/alex/services/trackbacks/80231.html


鍩轟簬涓氬姟闇姹傦紝鎮ㄤ細闇瑕佷嬌鐢ㄤ袱涓瓧孌墊潵浣滃鍚堜富閿紝渚嬪鍦?span lang="EN-US">User鏁版嵁琛ㄤ腑錛屾偍涔熻浼氫嬌鐢?span lang="EN-US">"name"涓?span lang="EN-US">"phone"涓や釜瀛楁鏉ュ畾涔夊鍚堜富閿?span lang="EN-US">

鍋囪鎮ㄨ繖涔堝緩绔?span lang="EN-US">User琛ㄦ牸錛?span lang="EN-US">

CREATETABLEuser聽(

聽聽聽聽name聽
VARCHAR(100)聽NOTNULL,

聽聽聽聽phone聽
VARCHAR(50)聽NOTNULL,

聽聽聽聽age聽
INT,

聽聽聽聽
PRIMARYKEY(name,聽phone)

);

鍦ㄨ〃鏍間腑錛?span lang="EN-US">"name"涓?span lang="EN-US">"age"琚畾涔変負澶嶅悎涓婚敭錛屽湪鏄犲儚鏃訛紝鎮ㄥ彲浠ヨUser綾誨埆鐩存帴甯︽湁"name"涓?span lang="EN-US">"age"榪欎袱涓睘鎬э紝鑰?span lang="EN-US">Hibernate瑕佹眰澶嶅悎涓婚敭綾誨埆瑕佸疄浣?span lang="EN-US">Serializable鎺ュ彛錛屽茍瀹氫箟equals()涓?span lang="EN-US">hashCode()鏂規硶錛?span lang="EN-US">

User.java

package聽onlyfun.caterpillar;



import聽java.io.Serializable;

import聽org.apache.commons.lang.builder.EqualsBuilder;

import聽org.apache.commons.lang.builder.HashCodeBuilder;



//聽澶嶅悎涓婚敭綾葷殑瀵瑰簲綾誨埆蹇呴』瀹炰綔Serializable鎺ュ彛

publicclass聽User聽implements聽Serializable聽{

聽聽聽聽
private聽String聽name;

聽聽聽聽
private聽String聽phone;

聽聽聽聽
private聽Integer聽age;

聽聽聽

聽聽聽聽
public聽User()聽{

聽聽聽聽}



聽聽聽聽
public聽Integer聽getAge()聽{

聽聽聽聽聽聽聽聽
return聽age;

聽聽聽聽}



聽聽聽聽
publicvoid聽setAge(Integer聽age)聽{

聽聽聽聽聽聽聽聽
this.age聽=聽age;

聽聽聽聽}



聽聽聽聽
public聽String聽getName()聽{

聽聽聽聽聽聽聽聽
return聽name;

聽聽聽聽}



聽聽聽聽
publicvoid聽setName(String聽name)聽{

聽聽聽聽聽聽聽聽
this.name聽=聽name;

聽聽聽聽}



聽聽聽聽
public聽String聽getPhone()聽{

聽聽聽聽聽聽聽聽
return聽phone;

聽聽聽聽}



聽聽聽聽
publicvoid聽setPhone(String聽phone)聽{

聽聽聽聽聽聽聽聽
this.phone聽=聽phone;

聽聽聽聽}

聽聽聽

聽聽聽聽
//聽蹇呴』閲嶆柊瀹氫箟equals()涓巋ashCode()

聽聽聽聽
publicboolean聽equals(Object聽obj)聽{

聽聽聽聽聽聽聽聽
if(obj聽==this)聽{

聽聽聽聽聽聽聽聽聽聽聽聽
returntrue;

聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽
if(!(obj聽instanceof聽User))聽{

聽聽聽聽聽聽聽聽聽聽聽聽
returnfalse;

聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽User聽user聽
=聽(User)聽obj;

聽聽聽聽聽聽聽聽
returnnew聽EqualsBuilder()

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.name,聽user.getName())

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.phone,聽user.getPhone())

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.isEquals();

聽聽聽聽聽聽聽

聽聽聽聽}

聽聽聽

聽聽聽聽
publicint聽hashCode()聽{

聽聽聽聽聽聽聽聽
returnnew聽HashCodeBuilder()

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.name)

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.phone)

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.toHashCode();

聽聽聽聽}

}

equals()涓?span lang="EN-US">hashCode()鏂規硶琚敤浣滀袱絎斾笉鍚屾暟鎹殑璇嗗埆渚濇嵁錛涙帴鐫鎮ㄥ彲浠ヤ嬌鐢?span lang="EN-US"><composite-id>鍦ㄦ槧灝勬枃浠朵腑瀹氫箟澶嶅悎涓婚敭涓庡璞$殑灞炴у搴旓細

User.hbm.xml

<?xml聽version="1.0"聽encoding="utf-8"?>

<!DOCTYPE聽hibernate-mapping

聽聽聽聽PUBLIC聽"-//Hibernate/Hibernate聽Mapping聽DTD聽3.0//EN"

聽聽聽聽"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>



<hibernate-mapping>



聽聽聽聽
<class聽name="onlyfun.caterpillar.User"聽table="user">

聽聽聽聽聽聽聽聽
<composite-id>

聽聽聽聽聽聽聽聽聽聽聽聽
<key-property聽name="name"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽column
="name"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽type
="java.lang.String"/>

聽聽聽聽聽聽聽聽聽聽聽聽
<key-property聽name="phone"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽column
="phone"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽type
="java.lang.String"/>

聽聽聽聽聽聽聽聽
</composite-id>



聽聽聽聽聽聽聽聽
<property聽name="age"聽column="age"聽type="java.lang.Integer"/>

聽聽聽

聽聽聽聽
</class>

</hibernate-mapping>

鍦ㄥ偍瀛樻暟鎹柟闈紝澶嶅悎涓婚敭鐨勫偍瀛樻病浠涔堝尯鍒紝鐜板湪鐨勯棶棰樺湪浜庡浣曚緷鎹鍚堜富閿潵鏌ヨ鏁版嵁錛屼緥濡備嬌鐢?span lang="EN-US">load()鏂規硶錛屾偍鍙互鍒涘緩涓涓?span lang="EN-US">User瀹炰緥錛屽茍璁懼畾澶嶅悎涓婚敭瀵瑰簲鐨勫睘鎬э紝鎺ョ潃鍐嶉忚繃load()鏌ヨ瀵瑰簲鐨勬暟鎹紝渚嬪錛?span lang="EN-US">

User聽user聽=new聽User();

user.setName(
"bush");

user.setPhone(
"0970123456");

聽聽聽聽聽聽聽

Session聽session聽
=聽sessionFactory.openSession();

//聽浠ュ疄渚嬭瀹氬鍚堜富閿茍鍔犺澆瀵瑰簲鐨勬暟鎹?/span>

user聽
=聽(User)聽session.load(User.class,聽user);

聽聽聽聽聽聽聽

System.out.println(user.getAge()聽
+"\t"+

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽user.getName()聽
+"\t"+

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽user.getPhone());

session.close();



鍙互灝嗕富閿殑淇℃伅鐙珛涓轟竴涓被鍒紝渚嬪錛?span lang="EN-US">

UserPK.java

package聽onlyfun.caterpillar;



import聽java.io.Serializable;



import聽org.apache.commons.lang.builder.EqualsBuilder;

import聽org.apache.commons.lang.builder.HashCodeBuilder;



publicclass聽UserPK聽implements聽Serializable聽{

聽聽聽聽
private聽String聽name;

聽聽聽聽
private聽String聽phone;



聽聽聽聽
public聽String聽getName()聽{

聽聽聽聽聽聽聽聽
return聽name;

聽聽聽聽}



聽聽聽聽
publicvoid聽setName(String聽name)聽{

聽聽聽聽聽聽聽聽
this.name聽=聽name;

聽聽聽聽}



聽聽聽聽
public聽String聽getPhone()聽{

聽聽聽聽聽聽聽聽
return聽phone;

聽聽聽聽}



聽聽聽聽
publicvoid聽setPhone(String聽phone)聽{

聽聽聽聽聽聽聽聽
this.phone聽=聽phone;

聽聽聽聽}

聽聽聽

聽聽聽聽
publicboolean聽equals(Object聽obj)聽{

聽聽聽聽聽聽聽聽
if(obj聽==this)聽{

聽聽聽聽聽聽聽聽聽聽聽聽
returntrue;

聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽
if(!(obj聽instanceof聽User))聽{

聽聽聽聽聽聽聽聽聽聽聽聽
returnfalse;

聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽UserPK聽pk聽
=聽(UserPK)聽obj;

聽聽聽聽聽聽聽聽
returnnew聽EqualsBuilder()

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.name,聽pk.getName())

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.phone,聽pk.getPhone())

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.isEquals();

聽聽聽聽聽聽聽

聽聽聽聽}

聽聽聽

聽聽聽聽
publicint聽hashCode()聽{

聽聽聽聽聽聽聽聽
returnnew聽HashCodeBuilder()

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.name)

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.phone)

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽.toHashCode();

聽聽聽聽}

}

鐜板湪User綾誨埆鐨勪富閿俊鎭鍒嗙鍑烘潵浜嗭紝渚嬪錛?span lang="EN-US">

User.java

package聽onlyfun.caterpillar;



import聽java.io.Serializable;



publicclass聽User聽implements聽Serializable聽{

聽聽聽聽
private聽UserPK聽userPK;聽//聽涓婚敭

聽聽聽聽
private聽Integer聽age;

聽聽聽

聽聽聽聽
public聽User()聽{

聽聽聽聽}



聽聽聽聽
public聽UserPK聽getUserPK()聽{

聽聽聽聽聽聽聽聽
return聽userPK;

聽聽聽聽}



聽聽聽聽
publicvoid聽setUserPK(UserPK聽userPK)聽{

聽聽聽聽聽聽聽聽
this.userPK聽=聽userPK;

聽聽聽聽}



聽聽聽聽
public聽Integer聽getAge()聽{

聽聽聽聽聽聽聽聽
return聽age;

聽聽聽聽}



聽聽聽聽
publicvoid聽setAge(Integer聽age)聽{

聽聽聽聽聽聽聽聽
this.age聽=聽age;

聽聽聽聽}

}

鍦ㄦ槧鍍忔枃浠舵柟闈紝闇瑕佹寚瀹氫富閿被鐨勪俊鎭紝渚嬪錛?span lang="EN-US">

User.hbm.xml

<?xml聽version="1.0"聽encoding="utf-8"?>

<!DOCTYPE聽hibernate-mapping

聽聽聽聽PUBLIC聽"-//Hibernate/Hibernate聽Mapping聽DTD聽3.0//EN"

聽聽聽聽"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>



<hibernate-mapping>



聽聽聽聽
<class聽name="onlyfun.caterpillar.User"聽table="user">

聽聽聽聽聽聽聽聽
<composite-id聽name="userPK"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽class
="onlyfun.caterpillar.UserPK"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽unsaved-value
="any">

聽聽聽聽聽聽聽聽聽聽聽聽
<key-property聽name="name"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽column
="name"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽type
="java.lang.String"/>

聽聽聽聽聽聽聽聽聽聽聽聽
<key-property聽name="phone"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽column
="phone"

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽type
="java.lang.String"/>

聽聽聽聽聽聽聽聽
</composite-id>

聽聽聽聽聽聽聽

聽聽聽聽聽聽聽聽
<property聽name="age"聽column="age"聽type="java.lang.Integer"/>

聽聽聽

聽聽聽聽
</class>



</hibernate-mapping>

鍦ㄦ煡璇㈡暟鎹椂錛屽繀欏繪寚瀹氫富閿俊鎭紝渚嬪錛?span lang="EN-US">

UserPK聽pk聽=new聽UserPK();

pk.setName(
"bush");

pk.setPhone(
"0970123456");

聽聽聽聽聽聽

Session聽session聽
=聽sessionFactory.openSession();

//聽浠ヤ富閿被瀹炰緥璁懼畾澶嶅悎涓婚敭騫跺姞杞藉搴旂殑鏁版嵁

User聽user聽
=聽(User)聽session.load(User.class,聽pk);

聽聽聽聽聽聽

System.out.println(user.getAge()聽
+"\t"+

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽user.getUserPK().getName()聽
+"\t"+

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽user.getUserPK().getPhone());

session.close();




=================================================
鍐嶅弬鑰價obbin鐨勪竴綃囨枃绔?br />涓涓畝鍗曠殑澶嶅悎涓婚敭鐨勫仛鍏寵仈綾葷殑渚嬪瓙聽聽


Alex 2006-11-09 19:22 鍙戣〃璇勮
]]>
Hibernate鐨刲oad閿欒錛屼綘紕板埌榪囪繖鏍風殑闂涔?http://m.tkk7.com/alex/archive/2006/11/07/79675.htmlAlexAlexTue, 07 Nov 2006 11:28:00 GMThttp://m.tkk7.com/alex/archive/2006/11/07/79675.htmlhttp://m.tkk7.com/alex/comments/79675.htmlhttp://m.tkk7.com/alex/archive/2006/11/07/79675.html#Feedback3http://m.tkk7.com/alex/comments/commentRss/79675.htmlhttp://m.tkk7.com/alex/services/trackbacks/79675.html
publicclass聽Parent聽implements聽Serializable聽{

聽聽聽聽
/**聽identifier聽field聽*/
聽聽聽聽
private聽Long聽id;

聽聽聽聽
/**聽persistent聽field聽*/
聽聽聽聽
private聽List聽childs;

聽聽聽聽
/**聽full聽constructor聽*/
聽聽聽聽
public聽Parent(Long聽id,聽List聽childs)聽{
聽聽聽聽聽聽聽聽
this.id聽=聽id;
聽聽聽聽聽聽聽聽
this.childs聽=聽childs;
聽聽聽聽}

聽聽聽聽
/**聽default聽constructor聽*/
聽聽聽聽
public聽Parent()聽{
聽聽聽聽}

聽聽聽聽
/**
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽@hibernate.id
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽generator-class="assigned"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽type="java.lang.Long"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽column="id"
聽聽聽聽聽*
聽聽聽聽聽
*/
聽聽聽聽
public聽Long聽getId()聽{
聽聽聽聽聽聽聽聽
returnthis.id;
聽聽聽聽}

聽聽聽聽
publicvoid聽setId(Long聽id)聽{
聽聽聽聽聽聽聽聽
this.id聽=聽id;
聽聽聽聽}

聽聽聽聽
/**
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽@hibernate.set
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽lazy="true"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽inverse="true"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽cascade="none"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽@hibernate.collection-key
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽column="parent_id"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽@hibernate.collection-one-to-many
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽聽聽聽聽class="net.foxlog.model.Child"
聽聽聽聽聽*聽聽聽聽聽聽聽聽聽
聽聽聽聽聽
*/
聽聽聽聽
public聽List聽getChilds()聽{
聽聽聽聽聽聽聽聽
returnthis.childs;
聽聽聽聽}

聽聽聽聽
publicvoid聽setChilds(List聽childs)聽{
聽聽聽聽聽聽聽聽
this.childs聽=聽childs;
聽聽聽聽}

聽聽聽聽
public聽String聽toString()聽{
聽聽聽聽聽聽聽聽
returnnew聽ToStringBuilder(this)
聽聽聽聽聽聽聽聽聽聽聽聽.append(
"id",聽getId())
聽聽聽聽聽聽聽聽聽聽聽聽.toString();
聽聽聽聽}

聽聽聽聽
publicboolean聽equals(Object聽other)聽{
聽聽聽聽聽聽聽聽
if聽(聽!(other聽instanceof聽Parent)聽)聽returnfalse;
聽聽聽聽聽聽聽聽Parent聽castOther聽
=聽(Parent)聽other;
聽聽聽聽聽聽聽聽
returnnew聽EqualsBuilder()
聽聽聽聽聽聽聽聽聽聽聽聽.append(
this.getId(),聽castOther.getId())
聽聽聽聽聽聽聽聽聽聽聽聽.isEquals();
聽聽聽聽}

聽聽聽聽
publicint聽hashCode()聽{
聽聽聽聽聽聽聽聽
returnnew聽HashCodeBuilder()
聽聽聽聽聽聽聽聽聽聽聽聽.append(getId())
聽聽聽聽聽聽聽聽聽聽聽聽.toHashCode();
聽聽聽聽}

}


Parent聽parent聽=聽(Parent)session.load(Parent.class,new Integer(7));

榪愯鎻愮ず鍑洪敊錛?can't get Entity.."

鐭ラ亾鏄粈涔堜綆綰ч敊璇箞?聽 鍏跺疄寰堝急鏅虹殑涓滆タ錛屼絾鏄笉娉ㄦ剰榪樺氨浼氬嚭鐜幫紝鍛靛懙錛岀瓟妗堝涓?




Alex 2006-11-07 19:28 鍙戣〃璇勮
]]>
[zt]hibernate浜岀駭緙撳瓨鏀葷暐http://m.tkk7.com/alex/archive/2006/10/23/76750.htmlAlexAlexMon, 23 Oct 2006 06:30:00 GMThttp://m.tkk7.com/alex/archive/2006/10/23/76750.htmlhttp://m.tkk7.com/alex/comments/76750.htmlhttp://m.tkk7.com/alex/archive/2006/10/23/76750.html#Feedback1http://m.tkk7.com/alex/comments/commentRss/76750.htmlhttp://m.tkk7.com/alex/services/trackbacks/76750.htmljavaEye


寰堝浜哄浜岀駭緙撳瓨閮戒笉澶簡瑙o紝鎴栬呮槸鏈夐敊璇殑璁よ瘑錛屾垜涓鐩存兂鍐欎竴綃囨枃绔犱粙緇嶄竴涓媓ibernate鐨勪簩綰х紦瀛樼殑錛屼粖澶╃粓浜庡繊涓嶄綇浜嗐?
鎴戠殑緇忛獙涓昏鏉ヨ嚜hibernate2.1鐗堟湰錛屽熀鏈師鐞嗗拰3.0銆?.1鏄竴鏍風殑錛岃鍘熻皡鎴戠殑欏藉浐涓嶅寲銆?/p>

hibernate鐨剆ession鎻愪緵浜嗕竴綰х紦瀛橈紝姣忎釜session錛屽鍚屼竴涓猧d榪涜涓ゆload錛屼笉浼氬彂閫佷袱鏉ql緇欐暟鎹簱錛屼絾鏄痵ession鍏抽棴鐨勬椂鍊欙紝涓綰х紦瀛樺氨澶辨晥浜嗐?/p>

浜岀駭緙撳瓨鏄疭essionFactory綰у埆鐨勫叏灞緙撳瓨錛屽畠搴曚笅鍙互浣跨敤涓嶅悓鐨勭紦瀛樼被搴擄紝姣斿ehcache銆乷scache絳夛紝闇瑕佽緗甴ibernate.cache.provider_class錛屾垜浠繖閲岀敤ehcache錛屽湪2.1涓氨鏄?
hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider
濡傛灉浣跨敤鏌ヨ緙撳瓨錛屽姞涓?
hibernate.cache.use_query_cache=true

緙撳瓨鍙互綆鍗曠殑鐪嬫垚涓涓狹ap錛岄氳繃key鍦ㄧ紦瀛橀噷闈㈡壘value銆?/p>

Class鐨勭紦瀛?/b>
瀵逛簬涓鏉¤褰曪紝涔熷氨鏄竴涓狿O鏉ヨ錛屾槸鏍規嵁ID鏉ユ壘鐨勶紝緙撳瓨鐨刱ey灝辨槸ID錛寁alue鏄疨OJO銆傛棤璁簂ist錛宭oad榪樻槸 iterate錛屽彧瑕佽鍑轟竴涓璞★紝閮戒細濉厖緙撳瓨銆備絾鏄痩ist涓嶄細浣跨敤緙撳瓨錛岃宨terate浼氬厛鍙栨暟鎹簱select id鍑烘潵錛岀劧鍚庝竴涓猧d涓涓猧d鐨刲oad錛屽鏋滃湪緙撳瓨閲岄潰鏈夛紝灝變粠緙撳瓨鍙栵紝娌℃湁鐨勮瘽灝卞幓鏁版嵁搴搇oad銆傚亣璁炬槸璇誨啓緙撳瓨錛岄渶瑕佽緗細
<cache usage="read-write"/>
濡傛灉浣犱嬌鐢ㄧ殑浜岀駭緙撳瓨瀹炵幇鏄痚hcache鐨勮瘽錛岄渶瑕侀厤緗甧hcache.xml
<cache name="com.xxx.pojo.Foo" maxElementsInMemory="500" eternal="false" timeToLiveSeconds="7200" timeToIdleSeconds="3600" overflowToDisk="true" />
鍏朵腑eternal琛ㄧず緙撳瓨鏄笉鏄案榪滀笉瓚呮椂錛宼imeToLiveSeconds鏄紦瀛樹腑姣忎釜鍏冪礌錛堣繖閲屼篃灝辨槸涓涓狿OJO錛夌殑瓚呮椂鏃墮棿錛屽 鏋渆ternal="false"錛岃秴榪囨寚瀹氱殑鏃墮棿錛岃繖涓厓绱犲氨琚Щ璧頒簡銆倀imeToIdleSeconds鏄彂鍛嗘椂闂達紝鏄彲閫夌殑銆傚綋寰緙撳瓨閲岄潰put 鐨勫厓绱犺秴榪?00涓椂錛屽鏋渙verflowToDisk="true"錛屽氨浼氭妸緙撳瓨涓殑閮ㄥ垎鏁版嵁淇濆瓨鍦ㄧ‖鐩樹笂鐨勪復鏃舵枃浠墮噷闈€?
姣忎釜闇瑕佺紦瀛樼殑class閮借榪欐牱閰嶇疆銆傚鏋滀綘娌℃湁閰嶇疆錛宧ibernate浼氬湪鍚姩鐨勬椂鍊欒鍛婁綘錛岀劧鍚庝嬌鐢╠efaultCache鐨勯厤緗紝榪欐牱澶氫釜class浼氬叡浜竴涓厤緗?
褰撴煇涓狪D閫氳繃hibernate淇敼鏃訛紝hibernate浼氱煡閬擄紝浜庢槸縐婚櫎緙撳瓨銆?
榪欐牱澶у鍙兘浼氭兂錛屽悓鏍風殑鏌ヨ鏉′歡錛岀涓嬈″厛list錛岀浜屾鍐峣terate錛屽氨鍙互浣跨敤鍒扮紦瀛樹簡銆傚疄闄呬笂榪欐槸寰堥毦鐨勶紝鍥犱負浣犳棤娉曞垽鏂粈涔堟椂鍊? 鏄涓嬈★紝鑰屼笖姣忔鏌ヨ鐨勬潯浠墮氬父鏄笉涓鏍風殑錛屽亣濡傛暟鎹簱閲岄潰鏈?00鏉¤褰曪紝id浠?鍒?00錛岀涓嬈ist鐨勬椂鍊欏嚭浜嗗墠50涓猧d錛岀浜屾 iterate鐨勬椂鍊欏嵈鏌ヨ鍒?0鑷?0鍙穒d錛岄偅涔?0-50鏄粠緙撳瓨閲岄潰鍙栫殑錛?1鍒?0鏄粠鏁版嵁搴撳彇鐨勶紝鍏卞彂閫?+20鏉ql銆傛墍浠ユ垜涓鐩磋涓? iterate娌℃湁浠涔堢敤錛屾繪槸浼氭湁1+N鐨勯棶棰樸?
錛堥澶栬瘽錛氭湁璇存硶璇村ぇ鍨嬫煡璇㈢敤list浼氭妸鏁翠釜緇撴灉闆嗚鍏ュ唴瀛橈紝寰堟參錛岃宨terate鍙猻elect id姣旇緝濂斤紝浣嗘槸澶у瀷鏌ヨ鎬繪槸瑕佸垎欏墊煡鐨勶紝璋佷篃涓嶄細鐪熺殑鎶婃暣涓粨鏋滈泦瑁呰繘鏉ワ紝鍋囧涓欏?0鏉$殑璇濓紝iterate鍏遍渶瑕佹墽琛?1鏉¤鍙ワ紝list铏界劧閫夋嫨 鑻ュ共瀛楁錛屾瘮iterate絎竴鏉elect id璇彞鎱竴浜涳紝浣嗗彧鏈変竴鏉¤鍙ワ紝涓嶈鍏ユ暣涓粨鏋滈泦hibernate榪樹細鏍規嵁鏁版嵁搴撴柟璦鍋氫紭鍖栵紝姣斿浣跨敤mysql鐨刲imit錛屾暣浣撶湅鏉ュ簲璇ヨ繕鏄? list蹇傦級
濡傛灉鎯寵瀵筶ist鎴栬卛terate鏌ヨ鐨勭粨鏋滅紦瀛橈紝灝辮鐢ㄥ埌鏌ヨ緙撳瓨浜?/p>

鏌ヨ緙撳瓨
棣栧厛闇瑕侀厤緗甴ibernate.cache.use_query_cache=true
濡傛灉鐢╡hcache錛岄厤緗甧hcache.xml錛屾敞鎰廻ibernate3.0浠ュ悗涓嶆槸net.sf鐨勫寘鍚嶄簡
<cache name="net.sf.hibernate.cache.StandardQueryCache"
maxElementsInMemory="50" eternal="false" timeToIdleSeconds="3600"
timeToLiveSeconds="7200" overflowToDisk="true"/>
<cache name="net.sf.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory="5000" eternal="true" overflowToDisk="true"/>
鐒跺悗
query.setCacheable(true);//嬋媧繪煡璇㈢紦瀛?
query.setCacheRegion("myCacheRegion");//鎸囧畾瑕佷嬌鐢ㄧ殑cacheRegion錛屽彲閫?
絎簩琛屾寚瀹氳浣跨敤鐨刢acheRegion鏄痬yCacheRegion錛屽嵆浣犲彲浠ョ粰姣忎釜鏌ヨ緙撳瓨鍋氫竴涓崟鐙殑閰嶇疆錛屼嬌鐢╯etCacheRegion鏉ュ仛榪欎釜鎸囧畾錛岄渶瑕佸湪ehcache.xml閲岄潰閰嶇疆瀹冿細
<cache name="myCacheRegion" maxElementsInMemory="10" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="7200" overflowToDisk="true" />
濡傛灉鐪佺暐絎簩琛岋紝涓嶈緗甤acheRegion鐨勮瘽錛岄偅涔堜細浣跨敤涓婇潰鎻愬埌鐨勬爣鍑嗘煡璇㈢紦瀛樼殑閰嶇疆錛屼篃灝辨槸net.sf.hibernate.cache.StandardQueryCache

瀵逛簬鏌ヨ緙撳瓨鏉ヨ錛岀紦瀛樼殑key鏄牴鎹甴ql鐢熸垚鐨剆ql錛屽啀鍔犱笂鍙傛暟錛屽垎欏電瓑淇℃伅錛堝彲浠ラ氳繃鏃ュ織杈撳嚭鐪嬪埌錛屼笉榪囧畠鐨勮緭鍑轟笉鏄緢鍙錛屾渶濂芥敼涓涓嬪畠鐨勪唬鐮侊級銆?
姣斿hql錛?
from Cat c where c.name like ?
鐢熸垚澶ц嚧濡備笅鐨剆ql錛?
select * from cat c where c.name like ?
鍙傛暟鏄?tiger%"錛岄偅涔堟煡璇㈢紦瀛樼殑key*澶х害*鏄繖鏍風殑瀛楃涓詫紙鎴戞槸鍑蹇嗗啓鐨勶紝騫朵笉綺劇‘錛屼笉榪囩湅浜嗕篃璇ユ槑鐧戒簡錛夛細
select * from cat c where c.name like ? , parameter:tiger%
榪欐牱錛屼繚璇佷簡鍚屾牱鐨勬煡璇€佸悓鏍風殑鍙傛暟絳夋潯浠朵笅鍏鋒湁涓鏍風殑key銆?
鐜板湪璇磋緙撳瓨鐨剉alue錛屽鏋滄槸list鏂瑰紡鐨勮瘽錛寁alue鍦ㄨ繖閲屽茍涓嶆槸鏁翠釜緇撴灉闆嗭紝鑰屾槸鏌ヨ鍑烘潵鐨勮繖涓涓睮D銆備篃灝辨槸璇達紝涓嶇鏄痩ist鏂? 娉曡繕鏄痠terate鏂規硶錛岀涓嬈℃煡璇㈢殑鏃跺欙紝瀹冧滑鐨勬煡璇㈡柟寮忓緢瀹冧滑騫蟲椂鐨勬柟寮忔槸涓鏍風殑錛宭ist鎵ц涓鏉ql錛宨terate鎵ц1+N鏉★紝澶氬嚭鏉ョ殑 琛屼負鏄畠浠~鍏呬簡緙撳瓨銆備絾鏄埌鍚屾牱鏉′歡絎簩嬈℃煡璇㈢殑鏃跺欙紝灝遍兘鍜宨terate鐨勮涓轟竴鏍蜂簡錛屾牴鎹紦瀛樼殑key鍘葷紦瀛橀噷闈㈡煡鍒頒簡value錛寁alue鏄? 涓涓瞚d錛岀劧鍚庡湪鍒癱lass鐨勭紦瀛橀噷闈㈠幓涓涓竴涓殑load鍑烘潵銆傝繖鏍峰仛鏄負浜嗚妭綰﹀唴瀛樸?
鍙互鐪嬪嚭鏉ワ紝鏌ヨ緙撳瓨闇瑕佹墦寮鐩稿叧綾葷殑class緙撳瓨銆俵ist鍜宨terate鏂規硶絎竴嬈℃墽琛岀殑鏃跺欙紝閮芥槸鏃㈠~鍏呮煡璇㈢紦瀛樺張濉厖class緙撳瓨鐨勩?
榪欓噷榪樻湁涓涓緢瀹規槗琚拷瑙嗙殑閲嶈闂錛屽嵆鎵撳紑鏌ヨ緙撳瓨浠ュ悗錛屽嵆浣挎槸list鏂規硶涔熷彲鑳介亣鍒?+N鐨勯棶棰橈紒鐩稿悓鏉′歡絎竴嬈ist鐨? 鏃跺欙紝鍥犱負鏌ヨ緙撳瓨涓壘涓嶅埌錛屼笉綆lass緙撳瓨鏄惁瀛樺湪鏁版嵁錛屾繪槸鍙戦佷竴鏉ql璇彞鍒版暟鎹簱鑾峰彇鍏ㄩ儴鏁版嵁錛岀劧鍚庡~鍏呮煡璇㈢紦瀛樺拰class緙撳瓨銆備絾鏄 浜屾鎵ц鐨勬椂鍊欙紝闂灝辨潵浜嗭紝濡傛灉浣犵殑class緙撳瓨鐨勮秴鏃舵椂闂存瘮杈冪煭錛岀幇鍦╟lass緙撳瓨閮借秴鏃朵簡錛屼絾鏄煡璇㈢紦瀛樿繕鍦紝閭d箞list鏂規硶鍦ㄨ幏鍙杋d涓蹭互 鍚庯紝灝嗕細涓涓竴涓幓鏁版嵁搴搇oad錛佸洜姝わ紝class緙撳瓨鐨勮秴鏃舵椂闂翠竴瀹氫笉鑳界煭浜庢煡璇㈢紦瀛樿緗殑瓚呮椂鏃墮棿錛佸鏋滆繕璁劇疆浜嗗彂鍛嗘椂闂寸殑璇濓紝淇濊瘉class緙撳瓨 鐨勫彂鍛嗘椂闂翠篃澶т簬鏌ヨ鐨勭紦瀛樼殑鐢熷瓨鏃墮棿銆傝繖閲岃繕鏈夊叾浠栨儏鍐碉紝姣斿class緙撳瓨琚▼搴忓己鍒秂vict浜嗭紝榪欑鎯呭喌灝辮鑷繁娉ㄦ剰浜嗐?/p>

鍙﹀錛屽鏋渉ql鏌ヨ鍖呭惈select瀛楀彞錛岄偅涔堟煡璇㈢紦瀛橀噷闈㈢殑value灝辨槸鏁翠釜緇撴灉闆嗕簡銆?/p>

褰揾ibernate鏇存柊鏁版嵁搴撶殑鏃跺欙紝瀹冩庝箞鐭ラ亾鏇存柊鍝簺鏌ヨ緙撳瓨鍛紵
hibernate鍦ㄤ竴涓湴鏂圭淮鎶ゆ瘡涓〃鐨勬渶鍚庢洿鏂版椂闂達紝鍏跺疄涔熷氨鏄斁鍦ㄤ笂闈et.sf.hibernate.cache.UpdateTimestampsCache鎵鎸囧畾鐨勭紦瀛橀厤緗噷闈€?
褰撻氳繃hibernate鏇存柊鐨勬椂鍊欙紝hibernate浼氱煡閬撹繖嬈℃洿鏂板獎鍝嶄簡鍝簺琛ㄣ傜劧鍚庡畠鏇存柊榪欎簺琛ㄧ殑鏈鍚庢洿鏂版椂闂淬傛瘡涓紦瀛橀兘鏈変竴涓敓鎴愭椂 闂村拰榪欎釜緙撳瓨鎵鏌ヨ鐨勮〃錛屽綋hibernate鏌ヨ涓涓紦瀛樻槸鍚﹀瓨鍦ㄧ殑鏃跺欙紝濡傛灉緙撳瓨瀛樺湪錛屽畠榪樿鍙栧嚭緙撳瓨鐨勭敓鎴愭椂闂村拰榪欎釜緙撳瓨鎵鏌ヨ鐨勮〃錛岀劧鍚庡幓鏌ユ壘榪? 浜涜〃鐨勬渶鍚庢洿鏂版椂闂達紝濡傛灉鏈変竴涓〃鍦ㄧ敓鎴愭椂闂村悗鏇存柊榪囦簡錛岄偅涔堣繖涓紦瀛樻槸鏃犳晥鐨勩?
鍙互鐪嬪嚭錛屽彧瑕佹洿鏂拌繃涓涓〃錛岄偅涔堝嚒鏄秹鍙婂埌榪欎釜琛ㄧ殑鏌ヨ緙撳瓨灝卞け鏁堜簡錛屽洜姝ゆ煡璇㈢紦瀛樼殑鍛戒腑鐜囧彲鑳戒細姣旇緝浣庛?/p>

Collection緙撳瓨
闇瑕佸湪hbm鐨刢ollection閲岄潰璁劇疆
<cache usage="read-write"/>
鍋囧class鏄疌at錛宑ollection鍙玞hildren錛岄偅涔坋hcache閲岄潰閰嶇疆
<cache name="com.xxx.pojo.Cat.children"
maxElementsInMemory="20" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="7200"
overflowToDisk="true" />
Collection鐨勭紦瀛樺拰鍓嶉潰鏌ヨ緙撳瓨鐨刲ist涓鏍鳳紝涔熸槸鍙繚鎸佷竴涓瞚d錛屼絾瀹冧笉浼氬洜涓鴻繖涓〃鏇存柊榪囧氨澶辨晥錛屼竴涓猚ollection緙撳瓨浠呭湪榪欎釜collection閲岄潰鐨勫厓绱犳湁澧炲垹鏃舵墠澶辨晥銆?
榪欐牱鏈変竴涓棶棰橈紝濡傛灉浣犵殑collection鏄牴鎹煇涓瓧孌墊帓搴忕殑錛屽綋鍏朵腑涓涓厓绱犳洿鏂頒簡璇ュ瓧孌墊椂錛屽鑷撮『搴忔敼鍙樻椂錛宑ollection緙撳瓨閲岄潰鐨勯『搴忔病鏈夊仛鏇存柊銆?/p>

緙撳瓨絳栫暐
鍙緙撳瓨錛坮ead-only錛夛細娌℃湁浠涔堝ソ璇寸殑
璇?鍐欑紦瀛橈紙read-write錛?紼嬪簭鍙兘瑕佺殑鏇存柊鏁版嵁
涓嶄弗鏍肩殑璇?鍐欑紦瀛橈紙nonstrict-read-write錛夛細闇瑕佹洿鏂版暟鎹紝浣嗘槸涓や釜浜嬪姟鏇存柊鍚屼竴鏉¤褰曠殑鍙兘鎬у緢灝忥紝鎬ц兘姣旇鍐欑紦瀛樺ソ
浜嬪姟緙撳瓨錛坱ransactional錛夛細緙撳瓨鏀寔浜嬪姟錛屽彂鐢熷紓甯哥殑鏃跺欙紝緙撳瓨涔熻兘澶熷洖婊氾紝鍙敮鎸乯ta鐜錛岃繖涓垜娌℃湁鎬庝箞鐮旂┒榪?/p>

璇誨啓緙撳瓨鍜屼笉涓ユ牸璇誨啓緙撳瓨鍦ㄥ疄鐜頒笂鐨勫尯鍒湪浜庯紝璇誨啓緙撳瓨鏇存柊緙撳瓨鐨勬椂鍊欎細鎶婄紦瀛橀噷闈㈢殑鏁版嵁鎹㈡垚涓涓攣錛屽叾浠栦簨鍔″鏋滃幓鍙栫浉搴旂殑緙撳瓨鏁版嵁錛屽彂鐜拌閿佷綇浜嗭紝鐒跺悗灝辯洿鎺ュ彇鏁版嵁搴撴煡璇€?
鍦╤ibernate2.1鐨別hcache瀹炵幇涓紝濡傛灉閿佷綇閮ㄥ垎緙撳瓨鐨勪簨鍔″彂鐢熶簡寮傚父錛岄偅涔堢紦瀛樹細涓鐩磋閿佷綇錛岀洿鍒?0縐掑悗瓚呮椂銆?
涓嶄弗鏍艱鍐欑紦瀛樹笉閿佸畾緙撳瓨涓殑鏁版嵁銆?/p>

浣跨敤浜岀駭緙撳瓨鐨勫墠緗潯浠?/b>
浣犵殑hibernate紼嬪簭瀵規暟鎹簱鏈夌嫭鍗犵殑鍐欒闂潈錛屽叾浠栫殑榪涚▼鏇存柊浜嗘暟鎹簱錛宧ibernate鏄笉鍙兘鐭ラ亾鐨勩備綘鎿嶄綔鏁版嵁搴撳繀闇鐩存帴閫氳繃 hibernate錛屽鏋滀綘璋冪敤瀛樺偍榪囩▼錛屾垨鑰呰嚜宸變嬌鐢╦dbc鏇存柊鏁版嵁搴擄紝hibernate涔熸槸涓嶇煡閬撶殑銆俬ibernate3.0鐨勫ぇ鎵歸噺鏇存柊鍜屽垹 闄ゆ槸涓嶆洿鏂頒簩綰х紦瀛樼殑錛屼絾鏄嵁璇?.1宸茬粡瑙e喅浜嗚繖涓棶棰樸?
榪欎釜闄愬埗鐩稿綋鐨勬鎵嬶紝鏈夋椂鍊檋ibernate鍋氭壒閲忔洿鏂般佸垹闄ゅ緢鎱紝浣嗘槸浣犲嵈涓嶈兘鑷繁鍐檍dbc鏉ヤ紭鍖栵紝寰堥儊闂峰惂銆?
SessionFactory涔熸彁渚涗簡縐婚櫎緙撳瓨鐨勬柟娉曪紝浣犱竴瀹氳鑷繁鍐欎竴浜汮DBC鐨勮瘽錛屽彲浠ヨ皟鐢ㄨ繖浜涙柟娉曠Щ闄ょ紦瀛橈紝榪欎簺鏂規硶鏄細
void evict(Class persistentClass)
Evict all entries from the second-level cache.
void evict(Class persistentClass, Serializable id)
Evict an entry from the second-level cache.
void evictCollection(String roleName)
Evict all entries from the second-level cache.
void evictCollection(String roleName, Serializable id)
Evict an entry from the second-level cache.
void evictQueries()
Evict any query result sets cached in the default query cache region.
void evictQueries(String cacheRegion)
Evict any query result sets cached in the named query cache region.
涓嶈繃鎴戜笉寤鴻榪欐牱鍋氾紝鍥犱負榪欐牱寰堥毦緇存姢銆傛瘮濡備綘鐜板湪鐢↗DBC鎵歸噺鏇存柊浜嗘煇涓〃錛屾湁3涓煡璇㈢紦瀛樹細鐢ㄥ埌榪欎釜琛紝鐢╡victQueries (String cacheRegion)縐婚櫎浜?涓煡璇㈢紦瀛橈紝鐒跺悗鐢╡vict(Class persistentClass)縐婚櫎浜哻lass緙撳瓨錛岀湅涓婂幓濂藉儚瀹屾暣浜嗐備笉榪囧摢澶╀綘娣誨姞浜嗕竴涓浉鍏蟲煡璇㈢紦瀛橈紝鍙兘浼氬繕璁版洿鏂拌繖閲岀殑縐婚櫎浠g爜銆傚鏋滀綘鐨? jdbc浠g爜鍒板閮芥槸錛屽湪浣犳坊鍔犱竴涓煡璇㈢紦瀛樼殑鏃跺欙紝榪樼煡閬撳叾浠栦粈涔堝湴鏂逛篃瑕佸仛鐩稿簲鐨勬敼鍔ㄥ悧錛?/p>

----------------------------------------------------

鎬葷粨錛?/b>
涓嶈鎯沖綋鐒剁殑浠ヤ負緙撳瓨涓瀹氳兘鎻愰珮鎬ц兘錛屼粎浠呭湪浣犺兘澶熼┚椹畠騫朵笖鏉′歡鍚堥傜殑鎯呭喌涓嬫墠鏄繖鏍風殑銆俬ibernate鐨勪簩綰х紦瀛橀檺鍒惰繕鏄瘮杈冨鐨勶紝涓嶆柟渚跨敤jdbc鍙兘浼氬ぇ澶х殑闄嶄綆鏇存柊鎬ц兘銆傚湪涓嶄簡瑙e師鐞嗙殑鎯呭喌涓嬩貢鐢紝鍙兘浼氭湁1+N鐨勯棶棰樸備笉褰撶殑浣跨敤榪樺彲鑳藉鑷磋鍑鴻剰鏁版嵁銆?
濡傛灉鍙椾笉浜唄ibernate鐨勮澶氶檺鍒訛紝閭d箞榪樻槸鑷繁鍦ㄥ簲鐢ㄧ▼搴忕殑灞傞潰涓婂仛緙撳瓨鍚с?
鍦ㄨ秺楂樼殑灞傞潰涓婂仛緙撳瓨錛屾晥鏋滃氨浼氳秺濂姐傚氨濂藉儚灝界紓佺洏鏈夌紦瀛橈紝鏁版嵁搴撹繕鏄瀹炵幇鑷繁鐨勭紦瀛橈紝灝界鏁版嵁搴撴湁緙撳瓨錛屽挶浠殑搴旂敤紼嬪簭榪樻槸瑕佸仛緙撳瓨銆傚洜涓? 搴曞眰鐨勭紦瀛樺畠騫朵笉鐭ラ亾楂樺眰瑕佺敤榪欎簺鏁版嵁騫蹭粈涔堬紝鍙兘鍋氱殑姣旇緝閫氱敤錛岃岄珮灞傚彲浠ユ湁閽堝鎬х殑瀹炵幇緙撳瓨錛屾墍浠ュ湪鏇撮珮鐨勭駭鍒笂鍋氱紦瀛橈紝鏁堟灉涔熻濂戒簺鍚с?/p>

緇堜簬鍐欏畬浜嗭紝濂界瘡鈥︹?/p>

Alex 2006-10-23 14:30 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 一个人看的免费视频www在线高清动漫 | 国产V亚洲V天堂无码久久久 | 欧洲乱码伦视频免费| 亚洲一区二区三区高清视频| 我的小后妈韩剧在线看免费高清版| 中文字幕 亚洲 有码 在线| 在线免费观看视频你懂的| 亚洲AV女人18毛片水真多| 真实乱视频国产免费观看 | 免费国产黄网站在线观看动图| 国产成人精品亚洲精品| 国产又黄又爽又猛免费app| 久久亚洲AV成人无码国产| 免费在线看v网址| 亚洲AV日韩AV一区二区三曲| 国产AV无码专区亚洲AV漫画| 88xx成人永久免费观看| 亚洲免费网站观看视频| 国产性爱在线观看亚洲黄色一级片| 久久精品一区二区免费看| 日本亚洲色大成网站www久久| 亚洲国产av无码精品| 中文字幕天天躁日日躁狠狠躁免费| 亚洲综合在线一区二区三区 | 亚洲A∨精品一区二区三区| 一本天堂ⅴ无码亚洲道久久| 精品亚洲一区二区| 亚洲AV无码乱码在线观看性色扶 | 性xxxx视频播放免费| 日本免费人成视频在线观看| 一本久久A久久免费精品不卡| 亚洲无码一区二区三区| 亚洲精品人成电影网| 国产亚洲综合成人91精品| 亚洲成人影院在线观看| 日本不卡高清中文字幕免费| h视频在线免费看| 99久久免费精品高清特色大片| 一级一看免费完整版毛片| 国产精品亚洲综合一区在线观看 | AV激情亚洲男人的天堂国语|