Hibernate学习笔记(三)
来源:互联网 发布:算法帝国 原版 编辑:程序博客网 时间:2024/06/05 16:57
Hibernate多对多操作
以用户和角色为例演示
第一步 创建实体类,用户和角色
第二步 让两个实体类之间互相表示
* 一个用户里面表示多个角色,用set集合
//一个用户有多个角色
private Set<Role>setRole =new HashSet<Role>();
public Set<Role> getSetRole() {
return setRole;
}
public void setSetRole(Set<Role>setRole) {
this.setRole =setRole;
}
* 一个角色有多个用户,用set集合
//一个角色有多个用户
private Set<User>setRole =new HashSet<User>();
public Set<User> getSetRole() {
return setRole;
}
public void setSetRole(Set<User>setRole) {
this.setRole =setRole;
}
第三步 配置映射关系
* 基本配置
* 配置多对多关系
在用户里面表示所有角色,使用set标签
<!-- 在用户里面表示所有角色,使用set标签
name属性:角色set集合名称
table属性:第三张表名称
-->
<set name="setRole" table="User_Role">
<!-- key标签里面配置
配置当前映射文件在第三张表的外键名称
-->
<key column="userid"></key>
<!-- class里面写角色实体类全路径
column角色在第三张表的外键名称
-->
<many-to-many class="com.hibernate.manytomany.Role" column="roleid"/>
</set>
在角色里面表示所有用户,使用set标签
<!-- 在角色里面表示所有用户,使用set标签
name属性:用户set集合名称
table属性:第三张表名称
-->
<set name="setUser" table="User_Role">
<!-- key标签里面配置
配置当前映射文件在第三张表的外键名称
-->
<key column="roleid"></key>
<!-- class里面写用户实体类全路径
column用户在第三张表的外键名称
-->
<many-to-many class="com.hibernate.manytomany.User" column="userid"/>
</set>
第四步 在核心配置文件中一如映射文件
<!-- 多对多 -->
<mapping resource="com/hibernate/manytomany/User.hbm.xml"/>
<mapping resource="com/hibernate/manytomany/Role.hbm.xml"/>
多对多级联保存
根据用户保存角色
第一步 在用户配置文件中set标签进行配置,cascade值save-update
<set name="setRole" table="user_role" cascade="save-update">
第二步 写代码实现
创建用户和角色对象,把角色放到用户里面,最终保存用户就可以了
//添加两个用户,为这两个用户添加多个角色
//创建用户和角色对象
User user1 = new User();
user1.setUser_name("刘备");
user1.setUser_password("123");
User user2 = new User();
user2.setUser_name("曹操");
user2.setUser_password("456");
Role r1 = new Role();
r1.setRole_name("王者");
r1.setRole_password("234");
Role r2 = new Role();
r2.setRole_name("皇帝");
r2.setRole_password("567");
Role r3 = new Role();
r3.setRole_name("奸雄");
r3.setRole_password("890");
//建立关系,把角色放到用户里面
//u1---r1/r2
user1.getSetRole().add(r1);
user1.getSetRole().add(r2);
//u2---r2/r3
user2.getSetRole().add(r2);
user2.getSetRole().add(r3);
//保存用户
session.save(user1);
session.save(user2);
多对多级联删除(了解)
第一步 在set标签进行配置,cascade值delete
<setname="setRole" table="user_role" cascade="save-update,delet>
第二步 删除用户
//查询ID然后删除
User user = session.get(User.class, 1);
session.delete(user);
维护第三张表
1用户和角色是多对多关系,通过第三张表来维护他们的关系
2让某个用户有某个角色
第一步 根据id查询出用户和角色
第二步 把角色放到用户里面(把角色对象放到用户set集合中)
//让某个用户有某个角色
//让刘备有奸雄这个角色
//查询刘备和奸雄
User user = session.get(User.class, 1);
Role role = session.get(Role.class, 3);
//把奸雄放到刘备的set集合里面去
user.getSetRole().add(role);
3让某个用户没有某个角色
第一步 根据id查询出用户和角色
第二步 从用户里面把角色去掉(从set集合里面把角色移除)
//让某个用户没有某个角色
//让刘备没有奸雄这个角色
//查询刘备和奸雄
User user1 = session.get(User.class, 1);
Role role1 = session.get(Role.class, 3);
//把奸雄放到刘备的set集合里面去
user1.getSetRole().remove(role1);
- Hibernate学习笔记(三)
- Hibernate学习笔记(三)
- hibernate学习笔记(三)
- Hibernate学习笔记(三)
- Hibernate学习笔记(三)
- Hibernate学习笔记(三)
- hibernate学习笔记(三)
- hibernate学习笔记(三)
- hibernate学习笔记三
- hibernate学习笔记三
- Hibernate学习笔记三
- hibernate学习笔记(三)
- Hibernate学习笔记三
- Hibernate学习笔记(三)
- hibernate学习笔记三
- Hibernate学习笔记(三)【配置详解】
- Hibernate学习笔记(三)Session
- Hibernate学习笔记(三)【配置详解】
- linux初学者-swap分区篇
- UI 一一 自定义View的封装和xib文件的使用详解
- 公司到底要不要无偿加班
- 微信公众号开1-准备工作
- 第12期 《用双手托起明天的太阳》8月刊
- Hibernate学习笔记(三)
- padding的使用技巧(持续更)
- Redis主从复制和集群配置
- linux初学者-磁盘加密篇
- OS-虚拟存储
- 谈论try,catch,语句中的return语句与后面的finally中语句谁先执行的问题
- DOM--如何添加、移除、移动、复制、创建和查找节点等。
- SQLMap用户手册【超详细】
- C++中的模板