博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate_day03--Hibernate多对多操作
阅读量:6259 次
发布时间:2019-06-22

本文共 4905 字,大约阅读时间需要 16 分钟。

Hibernate多对多操作

多对多映射配置

以用户和角色为例演示

第一步 创建实体类,用户和角色

第二步 让两个实体类之间互相表示

(1)一个用户里面表示所有角色,使用set集合

 

具体:

User.java

public class User {      private Integer user_id;//用户id      private String user_name;//用户名称      private String user_password;//用户密码      //一个用户可以有多个角色      private Set
setRole = new HashSet
(); public Set
getSetRole() { return setRole; } public void setSetRole(Set
setRole) { this.setRole = setRole; } public Integer getUser_id() { return user_id; } public void setUser_id(Integer user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getUser_password() { return user_password; } public void setUser_password(String user_password) { this.user_password = user_password; }}

(2)一个角色有多个用户,使用set集合

具体:

Role.java

public class Role {      private Integer role_id;//角色id      private String role_name;//角色名称      private String role_memo;//角色描述      // 一个角色有多个用户      private Set
setUser = new HashSet
(); public Set
getSetUser() { return setUser; } public void setSetUser(Set
setUser) { this.setUser = setUser; } public Integer getRole_id() { return role_id; } public void setRole_id(Integer role_id) { this.role_id = role_id; } public String getRole_name() { return role_name; } public void setRole_name(String role_name) { this.role_name = role_name; } public String getRole_memo() { return role_memo; } public void setRole_memo(String role_memo) { this.role_memo = role_memo; }}

第三步 配置映射关系

(1)基本配置

User.hbm.xml

Role.hbm,xml

(2)配置多对多关系

- 在用户里面表示所有角色,使用set标签

User,hbm.xml

 

- 在角色里面表示所有用户,使用set标签

Role.hbm.xml

 

第四步 在核心配置文件中引入映射文件

测试:

运行测试类

public class HibernateUtils {    static Configuration cfg = null;    static SessionFactory sessionFactory = null;    //静态代码块实现    static {        //加载核心配置文件        cfg = new Configuration().configure();        sessionFactory = cfg.buildSessionFactory();    }    //提供返回与本地线程绑定的session方法    public static Session getSessionObject() {        return sessionFactory.getCurrentSession();    }    // 提供方法返回sessionFactory    public static SessionFactory getSessionFactory() {        return sessionFactory;    }    public static void main(String[] args) {    }}

 

多对多级联保存

根据用户保存角色

第一步 在用户配置文件中set标签进行配置,cascade值save-update,就不用另外保存角色了

第二步 写代码实现

(1)创建用户和角色对象,把角色放到用户里面,最终保存用户就可以了

public class HibernateManytoMany {    //演示多对多级联保存    @Test    public void testSave() {        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try{            sessionFactory = HibernateUtils.getSessionFactory();            //与本地线程绑定的session            session = sessionFactory.openSession();            //开启事务            tx = session.beginTransaction();            //1 添加两个用户,为每个用户添加两个角色            User user1 = new User();            user1.setUser_name("mary");            user1.setUser_password("123");            User user2 = new User();            user2.setUser_name("lucy");            user2.setUser_password("456");            Role r1 = new Role();            r1.setRole_name("总经理");            r1.setRole_memo("总经理");            Role r2 = new Role();            r2.setRole_name("秘书");            r2.setRole_memo("秘书");            Role r3 = new Role();            r3.setRole_name("保安");            r3.setRole_memo("保安");            //2 建立关系,把角色放到用户里面            // user1--r1/r2,// user2--r2/r3            user1.getSetRole().add(r1);            user1.getSetRole().add(r2);            user2.getSetRole().add(r2);            user2.getSetRole().add(r3);            //3 保存用户            session.save(user1);            session.save(user2);            //提交事务            tx.commit();        }catch(Exception e) {            e.printStackTrace();            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }}

多对多级联删除(了解)

第一步 在set标签进行配置,cascade值delete

第二步 删除用户

 

维护第三张表关系

1 用户和角色多对多关系,维护关系通过第三张表维护

2 让某个用户有某个角色

第一步 根据id查询用户和角色

第二步 把角色放到用户里面

(1)把角色对象放到用户set集合

 

3 让某个用户没有某个角色

第一步 根据id查询用户和角色

第二步 从用户里面把角色去掉

(1)从set集合里面把角色移除

转载于:https://www.cnblogs.com/justdoitba/p/7856700.html

你可能感兴趣的文章
Android AsyncTask运作原理和源码分析
查看>>
demos.jquerymobile
查看>>
【Android】解决Android横竖屏切换数据丢失问题的方法
查看>>
spring+mybatis的多源数据库配置实战
查看>>
Oracle 导入外部文件数据库
查看>>
数值压缩存储方法Varint
查看>>
【转】Unity3.5 GameCenter基础教程
查看>>
C#_Profile 配置
查看>>
WCF和ASP.NET Web API在应用上的选择
查看>>
关于空指针NULL、野指针、通用指针
查看>>
从GIMP的Retinex算法里发现了一种高斯模糊的快速实现方法【开发记录】。
查看>>
c编写程序完成m名旅客和n辆汽车的同步程序代写
查看>>
oracle与sqlserver区别
查看>>
hdu4722之简单数位dp
查看>>
Android Fragment 学习<四>
查看>>
js 控制图片大小核心讲解
查看>>
从零开始编写自己的C#框架(2)——开发前准备工作
查看>>
装机 win7 64 IE11
查看>>
约瑟夫环问题
查看>>
五子棋
查看>>