博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate双向一对多对象关系模型映射
阅读量:4986 次
发布时间:2019-06-12

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

双向one-to-many

描述部门和岗位:一个部门有多个岗位

将单向的one-to-many 和many-to-one合并。

4.1双向的one-to-many数据库模型

1 create table department 2 ( 3     did int, 4     dname varchar 5 ); 6 create table work 7 ( 8     id int, 9     pname varchar,10     did int,11     constraint fk_did foreign key(did) references department(did)12 );

数据库中部门表和员工表构成主外键关系。

 

4.2产生java中的数据模型

 

4.3双向one-to-many配置

 

4.4进行curd操作

4.4.1添加部门信息

1 /** 2  * 增加部门信息 3  * ***/ 4 @Test 5 public void  addDept() 6 { 7     //获得Session对象 8     Session session=sf.openSession(); 9     //开启事务10     Transaction tr = session.beginTransaction();11     //创建部门对象12     Dept dept = new Dept();13     dept.setDname("研发部");14     session.save(dept);15     //提交事务16     tr.commit();17     //释放资源18     session.close();19 }

4.4.2新增部门和岗位

1 /** 2  * 增加部门信息和岗位信息 3  * 只在双向映射进行inverse的配置 4  * inverse:表示双方由谁维护两者之间的关系 5  * 默认:false 不反转,自己维护 6  * true:表示控制权的反转(交出),由对方进行维护 7  * 8  * one-to-many:处理交给many的一方进行关系的控制。 9  *10  * ***/11 @Test12 public void  addDeptPost()13 {14     //获得Session对象15     Session session=sf.openSession();16     //开启事务17     Transaction tr = session.beginTransaction();18     //创建部门对象19     Dept dept = new Dept();20     dept.setDname("安慰部22");21     //创建岗位对象22     Post p=new Post();23     p.setPname("逗你玩22");24     //实现了岗位的级联保存25     dept.getPosts().add(p);26     //如果关系进行反转,由岗位进行了控制,建立关系27     p.setDept(dept);28     session.save(dept);29     //提交事务30     tr.commit();31     //释放资源32     session.close();33 }

4.4.3删除部门信息

1 /** 2      只删除岗位信息,不删除部门信息 3  ****/ 4 @Test 5 public void  deleteDept2() 6 { 7     //获得Session对象 8     Session session=sf.openSession(); 9     //开启事务10     Transaction tr = session.beginTransaction();11     //查询部门对象12     Dept dept = (Dept) session.get(Dept.class, 8);13     //创建岗位对象14     Post p=new Post();15     p.setPid(5);16     /**17      * 删除与dept解除关系的post对象18      * ***/19     //解除该部门下某个岗位和部门的关系20     dept.getPosts().remove(p);21     //提交事务22     tr.commit();23     //释放资源24     session.close();25 }

 

转载于:https://www.cnblogs.com/guanghe/p/6094948.html

你可能感兴趣的文章
迭代之while循环(1)
查看>>
final修饰的类有什么特点
查看>>
关于string类中find函数的讲解
查看>>
程序员的情书
查看>>
Spring Cloud Eureka 使用 IP 地址进行服务注册
查看>>
Python 包的制作(__init__.py)
查看>>
java内存模型优化建议
查看>>
三十、模块补充
查看>>
流程审批设计
查看>>
别装了,你根本就不想变成更好的人
查看>>
数据库 join
查看>>
AES加密工具类[亲测可用]
查看>>
方法区
查看>>
Django-----ORM
查看>>
ARCGIS部分刷新
查看>>
发 零 食
查看>>
poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
查看>>
洛谷P1886 滑动窗口
查看>>
Shell编程(二)Bash中调用Python
查看>>
主动与被动监控 拓扑图组合图 自定义监控
查看>>