博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之hibernate之多对多双向关联映射
阅读量:5038 次
发布时间:2019-06-12

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

1.比如在权限管理中,角色和权限之间的关系就是多对多的关系,表结构为:

2.类结构

Role.java

public class Role implements Serializable{    private int id;    private String name;    private Set
permissions=new HashSet
(); public Role() { } public Role(String name) { super(); this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set
getPermissions() { return permissions; } public void setPermissions(Set
permissions) { this.permissions = permissions; }}

Permisssion.java

public class Permission implements Serializable{    private int id;    private String name;    private Set
roles; public Permission() { // TODO Auto-generated constructor stub } public Permission(String name) { super(); this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set
getRoles() { return roles; } public void setRoles(Set
roles) { this.roles = roles; }}

3.映射文件信息

Role.hbm.xml

Permission.hbm.xml

4.测试

public class HibernateTest {    /**     * 生成数据库表的工具方法     * */    @Test    public void testCreateDB(){        Configuration cfg = new Configuration().configure();        SchemaExport se = new SchemaExport(cfg);        //第一个参数  是否打印sql脚本        //第二个参数 是否将脚本导出到数据库中执行        se.create(true, true);    }    /**     * 初始化表数据     */    @Test    public void testInit(){        Session session = null;        Transaction tx = null;        try {            session = HibernateUtil.getSession();            tx = session.beginTransaction();            Permission p1 = new Permission("增加用户");            Permission p2 = new Permission("删除用户");            Permission p3 = new Permission("查询用户");            Permission p4 = new Permission("修改用户");                        Role r1 = new Role("管理员");            r1.getPermissions().add(p1);            r1.getPermissions().add(p2);            r1.getPermissions().add(p3);            r1.getPermissions().add(p4);            Role r2 = new Role("vip");            r2.getPermissions().add(p3);            r2.getPermissions().add(p4);                        session.save(p1);            session.save(p2);            session.save(p3);            session.save(p4);            session.save(r1);            session.save(r2);            tx.commit();                    } catch (Exception e) {            if(tx!=null)                tx.rollback();        }finally {            HibernateUtil.close();        }    }    /**     */    @Test    public void testGetData(){        Session session = HibernateUtil.getSession();        Role role = (Role)session.get(Role.class, 1);        System.out.println(role.getId()+"---"+role.getName());        System.out.println("-------------");        for(Permission p:role.getPermissions()){            System.out.println(p.getId()+"---"+p.getName());        }        System.out.println("==========================");        Permission p = (Permission)session.get(Permission.class, 3);        System.out.println(p.getId()+"----"+p.getName());        for(Role r:p.getRoles()){            System.out.println(r.getId()+"---"+r.getName());        }        HibernateUtil.close();    }}

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/11204764.html

你可能感兴趣的文章
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
mybatis中>=和<=的实现方式
查看>>
Python面向对象03/继承
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>