亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Hibernate集合映射之IDBag

系統 1720 0

假設Team和Student是1對多的關系,而student中只有team_id和name兩個屬性,我們可以不建立Student實體類,采用element的方式,由于bag可以允許重復,所以,在我們根據team刪除其下某一個student的時候,hibernate不知道具體要刪除哪一條數據,所以,只有講team下所有student全部刪除,然后再重新插入不應該刪除的數據,這樣會對效率有很大影響,針對這種情況,可以采用idbag標簽,在student中加一個字段cid來唯一標識每一個student

數據庫結構:

?

create ? table ?teamIDBag?(id? varchar ( 32 ),teamname? varchar ( 32 ));
create ? table ?studentIDBag(team_id? varchar ( 32 ),name? varchar ( 32 ),cid? varchar ( 32 ));

Pojo:

?

package ?Collection.IDBag;

import ?java.util.ArrayList;
import ?java.util.List;
import ?java.util.Map;

public ? class ?Team? ... {
???
private ?String?id;
???
private ?String?teamname;
???
private ?List?students = new ?ArrayList();
public ?String?getId()? ... {
????
return ?id;
}

public ? void ?setId(String?id)? ... {
????
this .id? = ?id;
}

public ?String?getTeamname()? ... {
????
return ?teamname;
}

public ? void ?setTeamname(String?teamname)? ... {
????
this .teamname? = ?teamname;
}

public ?List?getStudents()? ... {
????
return ?students;
}

public ? void ?setStudents(List?students)? ... {
????
this .students? = ?students;
}


}

?Team.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"
>
<!-- ?
????Mapping?file?autogenerated?by?MyEclipse?-?Hibernate?Tools
-->
< hibernate-mapping >
< class? name ="Collection.IDBag.Team" ?table ="teamIDBag" ? >
????
< id? name ="id" ?unsaved-value ="null" >
??????
< generator? class ="uuid.hex" ></ generator >
????
</ id >
????
< property? name ="teamname" ?type ="string" ?column ="teamname" ></ property >
???
????
< idbag? name ="students" ?table ="studentIDBag" ?cascade ="all,delete-orphan" ? >
??????
< collection-id? type ="string" ?column ="cid" >
????????
< generator? class ="uuid.hex" ></ generator >
??????
</ collection-id >
??????
< key? column ="team_id" ></ key >
??????
< element? type ="string" ?column ="name" ></ element >
????
</ idbag >
</ class >

</ hibernate-mapping >

?

Hibernate.cfg.xml

?

<? xml?version='1.0'?encoding='UTF-8' ?>
<! DOCTYPE?hibernate-configuration?PUBLIC
??????????"-//Hibernate/Hibernate?Configuration?DTD?3.0//EN"
??????????"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

<!-- ?Generated?by?MyEclipse?Hibernate?Tools.??????????????????? -->
< hibernate-configuration >

< session-factory >
????
< property? name ="connection.username" > root </ property >
????
< property? name ="connection.url" >
????????jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
&amp; useUnicode=true
????
</ property >
????
< property? name ="dialect" >
????????org.hibernate.dialect.MySQLDialect
????
</ property >
????
< property? name ="myeclipse.connection.profile" > mysql </ property >
????
< property? name ="connection.password" > 1234 </ property >
????
< property? name ="connection.driver_class" >
????????com.mysql.jdbc.Driver
????
</ property >
????
< property? name ="hibernate.dialect" >
????????org.hibernate.dialect.MySQLDialect
????
</ property >
????
< property? name ="hibernate.show_sql" > true </ property >
????
< property? name ="current_session_context_class" > thread </ property >
????
< property? name ="jdbc.batch_size" > 15 </ property >
????
< mapping? resource ="Collection/IDBag/Team.hbm.xml" ? />




</ session-factory >

</ hibernate-configuration >

?

測試代碼:

?

package ?Collection.IDBag;


import ?java.io.File;
import ?java.util.Map;

import ?org.hibernate.Session;
import ?org.hibernate.SessionFactory;
import ?org.hibernate.Transaction;
import ?org.hibernate.cfg.Configuration;

public ? class ?Test? ... {


????
public ? static ? void ?main(String[]?args)? ... {

????????String?filePath
= System.getProperty( " user.dir " ) + File.separator + " src/Collection/IDBag " + File.separator + " hibernate.cfg.xml " ;
????????File?file
= new ?File(filePath);
????????System.out.println(filePath);
????????SessionFactory?sessionFactory
= new ?Configuration().configure(file).buildSessionFactory();
????????Session?session
= sessionFactory.openSession();
????????Transaction?t
= session.beginTransaction();
????????
????
????????
// ????????Team?team1=new?Team();
// ????????team1.setTeamname("team1");
// ????????
// ????????Team?team2=new?Team();
// ????????team2.setTeamname("team2");
// ????????
// ???????
// ???????
//
// ???????? // 由于Bag映射可以重復,所以這里重復保存student
// ????????team1.getStudents().add("tom1");
// ????????team1.getStudents().add("tom1");
// ????????team2.getStudents().add("tom2");
// ????????
// ????????
// ????????
// ????????session.save(team1);
// ????????session.save(team2);
????????

????????Team?t1
= (Team)session.createQuery( " from?Team?t?where?t.teamname='team1' " ).uniqueResult();
????????t1.getStudents().remove(
0 );
????????t.commit();
????????
????}


}

?

運行結果:

Hibernate: select team0_.id as id0_, team0_.teamname as teamname0_ from teamIDBag team0_ where team0_.teamname='team1'
Hibernate: select students0_.team_id as team1_0_, students0_.name as name0_, students0_.cid as cid0_ from studentIDBag students0_ where students0_.team_id=?
Hibernate: delete from studentIDBag where cid=?

可以紅色部分,刪除student時是根據cid刪的,如果不使用idbag,則會出類似delete from studentIDBag where team_id=?的操作,然后會接著跟一個insert操作,來恢復本不應該刪除的數據

Hibernate集合映射之IDBag


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产精品久久 | 亚洲日韩欧洲无码av夜夜摸 | 免费观看男女羞羞的视频网站 | 亚洲九九爱 | 精品国产成人高清在线 | 特级毛片www欧美 | 午夜18免费观看 | 一级特黄性色生活片一区二区 | 99九九国产精品免费视频 | 毛片免费观看久久欧美 | 日韩精品无码一区二区三区 | 午夜三级做爰视频在线看 | 一级毛片在线免费观看 | 亚洲国产高清精品线久久 | m3u8久久国产精品影院 | 中文字幕亚洲欧美 | 77成人影视 | 日本高清视频www夜色资源网 | 99在线观看视频免费精品9 | 色97色| 99精品亚洲 | 97色在线视频 | 搜索一级毛片 | 亚洲欧美不卡中文字幕 | 精品无人区乱码一区二区三区手机 | 日韩视频欧美视频 | 七色永久性tv网站免费看 | www.四虎影视.com | 精品国产91乱码一区二区三区 | 青青青视频精品中文字幕 | 午夜色大片在线观看 | 91国内视频在线观看 | 亚洲va久久久久综合 | 日本一级毛片私人影院 | 老妇女性较大毛片 | 亚洲视频一区二区在线观看 | 91热爆国产露脸 | 在线播放精品一区二区啪视频 | 久久中文字幕免费视频 | 亚洲你我色 | 高清亚洲综合色成在线播放放 |