广安建设机械网站,长沙百度搜索排名,网站和域名,信息手机网站模板下载软件关联映射方面的最后一篇了#xff0c;我觉得映射文件的编写是使用hibernate的基础#xff0c;而关联映射又是基础的基础#xff0c;所以这方面分的细一些#xff0c;罗嗦一些#xff0c;说明白就好#xff0c;呵呵。多对多关联(双向)#xff0c;相对单向#xff0c;在实… 关联映射方面的最后一篇了我觉得映射文件的编写是使用hibernate的基础而关联映射又是基础的基础所以这方面分的细一些罗嗦一些说明白就好呵呵。 多对多关联(双向)相对单向在实体上就是一端也保持另一端的对象集合在映射文件中也配置上。但是要注意两边配置文件中指定的外键一定要对应。 1.对象模型 2.关系模型 3.实体类 Player.java public class Player { private Integer id; private String name; private SetRole roles; //一系列的setter.getter方法 Override public String toString() { return Player: name; } } Role.java public class Role { private Integer id; private String name; private SetPlayer players; //一系列的setter.getter方法 Override public String toString() { return Role: name; } } 4.映射文件 Player.hbm.xml class namecom.sxt.hibernate.many2many.entity.Player tablesxt_hibernate_player id nameid length4 generator classnative/generator /id property namename length10/property !--tablesxt_hibernate_user_role含义,用来指定中间表 -- set nameroles tablesxt_hibernate_player_role cascadesave-update !--key columnuser_id含义,指定中间表中用来指向本表的外键 -- key columnplayer_id/key !-- column含义,用来指定中间表中用来指向另一端表的外键 -- many-to-many classcom.sxt.hibernate.many2many.entity.Role columnrole_id/many-to-many /set /class Role.hbm.xml class namecom.sxt.hibernate.many2many.entity.Role tablesxt_hibernate_role id nameid length4 generator classnative/generator /id property namename length10/property set nameplayers tablesxt_hibernate_player_role cascadesave-update !-- 注意这里指定的外键要和另一端映射文件中的相对应 -- key columnrole_id/key !-- 注意这里指定的外键要和另一端映射文件中的相对应 -- many-to-many classcom.sxt.hibernate.many2many.entity.Player columnplayer_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 player1new Player(); player1.setName(姚明); Player player2new Player(); player2.setName(詹姆斯); Player player3new Player(); player3.setName(科比); Role role1new Role(); role1.setName(中锋); SetPlayer players1new HashSetPlayer(); players1.add(player1); players1.add(player2); role1.setPlayers(players1); Role role2new Role(); role2.setName(后卫); SetPlayer players2new HashSetPlayer(); 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(IteratorPlayer playersrole.getPlayers().iterator();players.hasNext();){ System.out.println(players.next()); } t.commit(); } catch (HibernateException e) { e.printStackTrace(); t.rollback(); } finally { HibernateUtils.closeSession(session); } } } 本文转自NightWolves 51CTO博客原文链接http://blog.51cto.com/yangfei520/276187如需转载请自行联系原作者