Hibernate Map映射的composite-element案例
系統
1675 0
?在這個案例的hbm文件中,只有一個持久話類Team,Member作為class引入,map的關系被映射到teammember表中,
?
數據庫結構:
CREATE
?
TABLE
?`team5`?(
??`id`?
varchar
(
50
)?
NOT
?
NULL
,
??`name`?
varchar
(
50
)?
default
?
NULL
,
??
PRIMARY
?
KEY
??(`id`)
)?ENGINE
=
InnoDB?
DEFAULT
?CHARSET
=
gb2312;
CREATE
?
TABLE
?`teammembers`?(
??`teamid`?
varchar
(
50
)?
NOT
?
NULL
,
??`name`?
varchar
(
50
)?
default
?
NULL
,
??`age`?
varchar
(
50
)?
default
?
NULL
,
??`teamrole`?
varchar
(
50
)?
default
?
NULL
,
)?ENGINE
=
InnoDB?
DEFAULT
?CHARSET
=
gb2312;
持久類:
?
package
?compositeelement;
import
?java.util.HashMap;
import
?java.util.Map;
import
?java.util.Set;
public
?
class
?Member?
...
{
???
private
?String?id;
???
private
?String?name;
???
private
?Team?team;
???
private
?String?age;
public
?String?getAge()?
...
{
????
return
?age;
}
public
?
void
?setAge(String?age)?
...
{
????
this
.age?
=
?age;
}
public
?String?getName()?
...
{
????
return
?name;
}
public
?
void
?setName(String?name)?
...
{
????
this
.name?
=
?name;
}
public
?String?getId()?
...
{
????
return
?id;
}
public
?
void
?setId(String?id)?
...
{
????
this
.id?
=
?id;
}
public
?Team?getTeam()?
...
{
????
return
?team;
}
public
?
void
?setTeam(Team?team)?
...
{
????
this
.team?
=
?team;
}
}
package
?compositeelement;
import
?java.util.HashMap;
import
?java.util.Map;
public
?
class
?Team?
...
{
???
private
?String?id;
???
private
?String?name;
???
private
?Map?members
=
new
?HashMap();
public
?String?getId()?
...
{
????
return
?id;
}
public
?
void
?setId(String?id)?
...
{
????
this
.id?
=
?id;
}
public
?Map?getMembers()?
...
{
????
return
?members;
}
public
?
void
?setMembers(Map?members)?
...
{
????
this
.members?
=
?members;
}
public
?String?getName()?
...
{
????
return
?name;
}
public
?
void
?setName(String?name)?
...
{
????
this
.name?
=
?name;
}
}
映射文件:
?
<?
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?
package
="compositeelement"
>
????
<
import?
class
="Member"
/>
????
<
class?
name
="Team"
?table
="team5"
>
???????
<
id?
name
="id"
?column
="id"
>
?????????
<
generator?
class
="uuid.hex"
></
generator
>
???????
</
id
>
???????
<
property?
name
="name"
?column
="name"
/>
???????
<
map?
name
="members"
?table
="teammembers"
??inverse
="false"
??cascade
="save-update"
>
??????????
<
key?
column
="teamid"
/>
??????????
<
index?
column
="teamrole"
?type
="string"
></
index
>
??????????
<
composite-element?
class
="Member"
>
?????????????
<
parent?
name
="team"
/>
?????????????
<
property?
name
="name"
/>
?????????????
<
property?
name
="age"
></
property
>
??????????
</
composite-element
>
???????
</
map
>
????
</
class
>
</
hibernate-mapping
>
測試代碼:
public
?
static
?
void
?main(String[]?args)?
...
{
????????Configuration?cfg
=
new
?Configuration();
????????cfg.configure();
????????SessionFactory?sf
=
cfg.buildSessionFactory();
????????Session?session
=
sf.openSession();
????????Transaction?t
=
session.beginTransaction();
????????Team?team1
=
new
?Team();
????????team1.setName(
"
足球隊-01
"
);
????
????????
????????Member?m1
=
new
?Member();
????????m1.setName(
"
張三
"
);
????????m1.setAge(
"
11
"
);
????????
????????Member?m2
=
new
?Member();
????????m2.setName(
"
張四
"
);
????????m2.setAge(
"
22
"
);
????????
????????
????????
????????team1.getMembers().put(
"
守門員
"
,?m1);
????????team1.getMembers().put(
"
中后衛
"
,?m2);
????????session.save(team1);
????????
????????
????????t.commit();
????????System.out.println(
"
success
"
);
????}
運行結果:
Hibernate: insert into team5 (name, id) values (?, ?)
Hibernate: insert into teammembers (teamid, teamrole, name, age) values (?, ?, ?, ?)
Hibernate: insert into teammembers (teamid, teamrole, name, age) values (?, ?, ?, ?)
Hibernate Map映射的composite-element案例
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元