双向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. @Test
  12. 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. }

Hibernate双向一对多对象关系模型映射的更多相关文章

  1. Hibernate双向多对多对象关系模型映射

    1 双向many-to-many 业务模型: 描述员工和项目 一个员工同时可以参与多个项目 一个项目中可以包含多个员工 分析:数据库的数据模型,通过中间关系表,建立两个one-to-many构成man ...

  2. Hibernate单向一对多对象关系模型映射

    1 hibernate 的对象关系映射 Orm: 类-----表 属性------字段 对象------记录 表:在数据库中存在主外键的关系,反向工厂类是由表生成,在由表生成类的时候,类和类之间存在者 ...

  3. Hibernate双向一对一对象关系模型映射

    一个员工一辆车:one-to-one 实现一:让汽车表中的外键唯一 create table emp ( eid int primary key auto_increment, ename varch ...

  4. Hibernate 双向一对多的关联映射

    双向的一对多的关联关系是单项的一对多和单项的多对一的情况下产生的. 1.设计表结构 虽然关联关系变为双向的一对多,但是我们表结构不会发生改变,只是指向变了. 2.创建student对象 3.创建Gra ...

  5. hibernate 双向一对多关系(Annotation mappedBy注解理解)

    1.@mappedBy 属性简单理解为设定为主表(OneToMany方)(这只是我个人理解,上面文章中也有提到过) 所以另一端(ManyToOne)则需要设置外键@JoinColumn(name=&q ...

  6. Hibernate 单项一对多的关联映射

    在上一篇中我们简单介绍了多对一的关联映射,本文介绍hibernate中一对多的关联映射. 1.设计表结构 虽然关联关系由多对一变为一对多,但是我们表结构不会发生改变,只是指向变了. 2.创建stude ...

  7. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  8. hibernate中一对多关系中的inverse,cascade属性

    举例说明: 一对多关系的两张表:boy.girl(一个男孩可以多个女朋友) boy表结构 Field   Type        ------  -----------  name    varcha ...

  9. Hibernate双向一对多、双向多对多关联关系中的映射文件怎么写

    这里以一对多关联关系为例.以Country类为一端,Competition类为多端. 一个国家可以有多个赛事,但是一个赛事只能属于一个国家. Country类 public class Country ...

随机推荐

  1. R语言 recommenderlab 包

    recommend li_volleyball 2016年3月20日 library(recommenderlab) ## Warning: package 'recommenderlab' was ...

  2. NHibernate配置

    因为NHibernate被设计为可以在许多不同环境下工作,所以它有很多配置参数.幸运的是,大部分都已经有默认值了. NHibernate.Test.dll包含了一个示例的配置文件app.config, ...

  3. 特殊字符导致用正则表达式进行字符串替换失败,Java replaceAll()方法报错Illegal group reference

    String str = "给商品||?>\\n阳澄湖大闸蟹!@#$%^&*()_+-=?:\",.]\\|~.,\/??\\\\|\\br点赞" Stri ...

  4. CSS样式案例(2)-制作一个简单的登录界面

    首先来张完工的效果图. 一.html文件如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  5. Mac OS X 11以上系统的Rootless机制问题

    由于项目紧,系统一直停留在10版本,最近清闲之后,第一件事就是升级了系统,到11El Capitan版本. 本来想着随便升级了,可能有好玩的东东,结果好玩的木有看见,项目开发环境崩溃了,何其衰耶? 废 ...

  6. IntelliJ Idea 修改编码格式

    Setting→Editor→File Encodings→设置“Project Encoding”为UTF-8,如图:

  7. Unity手游之路<十一>资源打包Assetbundle

    http://blog.csdn.net/janeky/article/details/17652021 在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制 ...

  8. spring 部分配置内容备忘

    1.spring定时器简单配置: <bean name="taskJob" class="com.netcloud.mail.util.TaskJob"& ...

  9. 3.创建基本的AngularJS应用

    1.1.模块 AngularJS引入了代表应用程序组件的模块的概念.模块提供命名空间,以基于模型的名称来引用指令,范围和其他组件.使得包装和再利用应用程序的部件更容易. AngularJS中,每个视图 ...

  10. POJ 3281 网络流dinic算法

    B - Dining Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...