Hibernate学习笔记5

举报
wh_bn 发表于 2021/12/15 23:39:17 2021/12/15
【摘要】   Hibernate学习笔记5 学习课程: 多对多关联映射——单向 Hibernate_10_ManyToMany_1 多对多关联映射——双向 Hibernate_09_ManyToMany_2 学习内容: ...

Hibernate学习笔记5

学习课程:

多对多关联映射——单向

Hibernate_10_ManyToMany_1

多对多关联映射——双向

Hibernate_09_ManyToMany_2

学习内容:

多对多关联映射

单向对象模型(User---->Role):

映射文件User.hbm.xml:

 

  1. <class name="User" table="t_users"><id name="id" column="name_id"><generator class="native" /></id><property name="name" /><!-- 建立出一张新表用来存放User和Role的关系user_id 和 role_id 通过外键映射成为复合主键--><set name="roles" table="t_user_role"><!--对方--><key column="user_id" /><!--本身--><many-to-many class="Role" column="role_id"/><!--对方--></set></class>

 

映射文件Role.hbm.xml都是普通属性,内容简单不予给出。

双向对象模型:

映射文件Role.hbm.xml

  1. <class name="Role" table="t_roles"><id name="id" column="name_id"><generator class="native" /></id><property name="name" /><set name="users" table="t_user_role"><!--对方--><key column="role_id"/><!--本身--><many-to-many class="User" column="user_id" /><!--对方--></set></class>

只修改Role.hbm.xml映射文件即可

注:

table 属性值必须和单向关联中的table属性值一致

<key>中column属性值要与单向关联中的<many-to-many>标签中的column属性值一致

在<many-to-many>中的column属性值要与单向关联中<key>标签的column属性值一致

进行测试的方法,以及主要源代码:

testSave1()

向数据库中写入数据

方向:

User---->Role

  1. Role r1 = new Role();r1.setName("网站构建人员");…………session.save(r1);session.save(r2);session.save(r3);User u1 = new User();u1.setName("何萍");Set<Role> u1Role = new HashSet<Role>();u1Role.add(r1);u1Role.add(r2);u1.setRoles(u1Role);…………session.save(u1);session.save(u2);session.save(u3);

testSave2()

向数据库中写入数据

方向:

Role---->User

  1. User u1 = new User();u1.setName( "桂卫华" );…………session.save( u1 );session.save( u2 );session.save( u3 );Role r1 = new Role();r1.setName( "软件策划人员" );Set<User> r1User = new HashSet<User>();r1User.add( u1 );r1User.add( u2 );r1.setUsers( r1User );…………session.save( r1 );session.save( r2 );session.save( r3 );

 

testLoad1()

加载数据

方向
User---->Role

  1. User u2 = (User)session.get( User.class ,  1 );System.out.println("u2.name: " + u2.getName());Set<Role> u2Role = u2.getRoles();for (Role r : u2Role) { System.out.println("u2.role: " + r.getName());}

testLoad2()

加载数据

方向:

Role---->User

  1. Role r1 =(Role) session.get( Role.class , 1 );System.out.println( "r1.name: " + r1.getName() );Set<User> r1User = r1.getUsers();for( User u : r1User ){  System.out.println( "r1.user.name: " + u.getName() );}

文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fengda2870/article/details/3300981

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。