此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
Hibernate的多对多操作
多对多的映射配置
以用户和角色为例
第一步:创建实体类,用户和角色
第二步:让两个实体类之间互相表示
(1)一个用户里面表示所有角色用set集合
(2)一个角色有多个用户,用set集合
第三步:配置映射关系
(1)基本配置
(2)配置多对多的关系
在用户里面表示所有的角色,使用set标签
在角色里面表示所有的用户,使用set标签
第四步:在核心配置文件中引入映射文件
第五步:测试(执行工具类,看表是否创建)
多对多的级联操作
多对多的级联保存
根据用户保存角色
第一步:在用户配置文件中set标签进行配置,cascade值save-update
第二步:写代码实现
(1)创建用户和角色的对象,把角色放到用户中去,最终保存用户就可以了
//添加两个用户,为每个用户添加两个角色
//1.创建对象
User user1 = new User();
user1.setUser_name(“lucy”);
user1.setUser_password(“123”);
User user2 = new User();
user2.setUser_name("mary");
user2.setUser_password("456");
Role role1 = new Role();
role1.setRole_name("总经理");
role1.setRole_memo("总经理是");
Role role2 = new Role();
role2.setRole_name("秘书");
role2.setRole_memo("秘书是");
Role role3 = new Role();
role3.setRole_name("司机");
role3.setRole_memo("司机是");
//2.建立关系,把角色放到用户中
// user1 -- role1/role2
// user2 -- role2/role3
user1.getRoles().add(role1);
user1.getRoles().add(role2);
user2.getRoles().add(role2);
user2.getRoles().add(role3);
session.save(user1);
session.save(user2);
多对多的级联删除
第一步:在set标签中进行配置,cascade值为delete
第二步:删除用户(一般不用,这样的话把三个表所有相关的属性全部删除,user与role与第三张表的相关的id全部删除)
维护第三张表
1.用户与角色是多对多的关系,维护他们的关系是通过第三张表来进行维护
2.让某个用户拥有某个角色
第一步:根据id查询出用户和角色
第二步:把角色放到用户里
(1)把角色对象放到用户的set集合内
3.让某个用户没有某个角色
第一步:根据id查询出用户和角色
第二步:从用户里面把角色去掉
(1)在set集合内把角色移除