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

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條評論
主站蜘蛛池模板: 欧美国产一区二区二区 | 我就色色综合网 | 13一14周岁毛片免费 | 成人午夜大片免费7777 | 亚洲精品色综合久久久 | a毛毛片| 摸逼综合网| 一级毛片大全免费播放 | 久久国产精品最新一区 | 久热在线 | 亚洲精品一区二区三区福利 | 波多野结衣与公中出中文字幕 | 久久精品成人欧美大片免费 | 国产99久9在线视频 国产99久久 | 久久国产免费福利资源网站 | 2021国产成人综合亚洲精品 | 日日插天天干 | 国产性大片黄在线观看在线放 | 2019亚洲日韩新视频 | 狠狠色丁香婷婷综合精品视频 | 久久国产一区二区 | 国产精品久久久久久一级毛片 | 尤物精品国产福利网站 | 成 人 a v免费视频 | 国产真实偷人视频在线播放 | 青青青手机版视频在线观看 | 久久国产影视免费精品 | 性生活免费网站 | 成人a视频片在线观看免费 成人a视频在线观看 | 国产精品第一页爽爽影院 | 亚洲精品美女在线观看 | 91久久综合九色综合欧美98 | 中中文字幕乱码 | 轻轻色在线视频中文字幕 | 狠狠色丁香婷婷综合久久片 | 精品久久久一二三区 | 日本一区二区三区在线观看 | 国产精品亚洲二区在线 | 天天久久综合网站 | 国产精品福利一区二区 | 日韩中文字幕在线观看 |