多对多关联映射(双向)
来源:百度文库 编辑:神马文学网 时间:2024/04/29 15:02:45
关联映射方面的最后一篇了,我觉得映射文件的编写是使用hibernate的基础,而关联映射又是基础的基础,所以这方面分的细一些,罗嗦一些,说明白就好,呵呵。 多对多关联(双向),相对单向,在实体上就是一端也保持另一端的对象集合,在映射文件中也配置上。但是要注意两边配置文件中指定的外键一定要对应。1.对象模型: 2.关系模型: 3.实体类: Player.javapublic class Player {
private Integer id;
private String name;
private Set roles;
//一系列的setter.getter方法
@Override
public String toString() {
return "Player: " + name;
}
} Role.javapublic class Role {
private Integer id;
private String name;
private Set players;
//一系列的setter.getter方法
@Override
public String toString() {
return "Role: " + name;
}
} 4.映射文件: Player.hbm.xml <class name="com.sxt.hibernate.many2many.entity.Player" table="sxt_hibernate_player">
<id name="id" length="4">
<generator class="native">generator>
id>
<property name="name" length="10">property>
<set name="roles" table="sxt_hibernate_player_role" cascade="save-update">
<key column="player_id">key>
<many-to-many class="com.sxt.hibernate.many2many.entity.Role" column="role_id">many-to-many>
set>
class> Role.hbm.xml <class name="com.sxt.hibernate.many2many.entity.Role" table="sxt_hibernate_role">
<id name="id" length="4">
<generator class="native">generator>
id>
<property name="name" length="10">property>
<set name="players" table="sxt_hibernate_player_role" cascade="save-update">
<key column="role_id">key>
<many-to-many class="com.sxt.hibernate.many2many.entity.Player" column="player_id">many-to-many>
set>
class> 5.hibernate配置文件: 参照上一篇。 6. 测试方法: public static void main(String[] args) {
Session session = HibernateUtils.getSession();
Transaction t = session.beginTransaction();
try {
/**
* 测试插入数据
*/
/* Player player1=new Player();
player1.setName("姚明");
Player player2=new Player();
player2.setName("詹姆斯");
Player player3=new Player();
player3.setName("科比");
Role role1=new Role();
role1.setName("中锋");
Set players1=new HashSet();
players1.add(player1);
players1.add(player2);
role1.setPlayers(players1);
Role role2=new Role();
role2.setName("后卫");
Set players2=new HashSet();
players2.add(player2);
players2.add(player3);
role2.setPlayers(players2);
session.save(role1);
session.save(role2);*/
/**
* 测试加载数据
*/
Role role=(Role)session.load(Role.class, 4);
System.out.println(role);
for(Iterator players=role.getPlayers().iterator();players.hasNext();){
System.out.println(players.next());
}
t.commit();
} catch (HibernateException e) {
e.printStackTrace();
t.rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
}
private Integer id;
private String name;
private Set
//一系列的setter.getter方法
@Override
public String toString() {
return "Player: " + name;
}
} Role.javapublic class Role {
private Integer id;
private String name;
private Set
//一系列的setter.getter方法
@Override
public String toString() {
return "Role: " + name;
}
} 4.映射文件: Player.hbm.xml <class name="com.sxt.hibernate.many2many.entity.Player" table="sxt_hibernate_player">
<id name="id" length="4">
<generator class="native">generator>
id>
<property name="name" length="10">property>
<set name="roles" table="sxt_hibernate_player_role" cascade="save-update">
<key column="player_id">key>
<many-to-many class="com.sxt.hibernate.many2many.entity.Role" column="role_id">many-to-many>
set>
class> Role.hbm.xml <class name="com.sxt.hibernate.many2many.entity.Role" table="sxt_hibernate_role">
<id name="id" length="4">
<generator class="native">generator>
id>
<property name="name" length="10">property>
<set name="players" table="sxt_hibernate_player_role" cascade="save-update">
<key column="role_id">key>
<many-to-many class="com.sxt.hibernate.many2many.entity.Player" column="player_id">many-to-many>
set>
class> 5.hibernate配置文件: 参照上一篇。 6. 测试方法: public static void main(String[] args) {
Session session = HibernateUtils.getSession();
Transaction t = session.beginTransaction();
try {
/**
* 测试插入数据
*/
/* Player player1=new Player();
player1.setName("姚明");
Player player2=new Player();
player2.setName("詹姆斯");
Player player3=new Player();
player3.setName("科比");
Role role1=new Role();
role1.setName("中锋");
Set
players1.add(player1);
players1.add(player2);
role1.setPlayers(players1);
Role role2=new Role();
role2.setName("后卫");
Set
players2.add(player2);
players2.add(player3);
role2.setPlayers(players2);
session.save(role1);
session.save(role2);*/
/**
* 测试加载数据
*/
Role role=(Role)session.load(Role.class, 4);
System.out.println(role);
for(Iterator
System.out.println(players.next());
}
t.commit();
} catch (HibernateException e) {
e.printStackTrace();
t.rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
}
多对多关联映射(双向)
一对多关联映射(双向)
hibernate多对一关联映射
Eclipse快速上手Hibernate--8. 关联映射(多对多)
Eclipse快速上手Hibernate--7. 关联映射(一对多) (2
Eclipse快速上手Hibernate--7. 关联映射(一对多) (3)
Hibernate对多表关联查询
对“国学热”的双向思考
人民币对美元汇率双向波动明显
多名“京官”赴基层履新 双向交流任职或成常态
双向看人看己
双向看人看已
双向成交量
关联交易
关联企业
各种关联
韩剧对中国市场的映射【烟友爽哪儿有卖 正宗烟友爽 上海市烟友爽销售供应 非非易清
过程模式之O/R映射映射
过程模式之O/R映射映射
英汉双向字典DIY
农民工急需双向转型
双向可控硅原理图
双向细目表22
双向细目表4