在我看来,Hibernate提供这些映射关系,常用就是一对一和多对一,并且在能不用连接表的时候尽量不要用连接表。多对多会用到,如果用到了,应该首先考虑底层数据库设计是否合理。
 
在实际开发中,在Hibernate关联关系之外常常还有另外一种选择方案,表各自作为单表映射,业务逻辑控制外键关系(有时候就是一个相关联的列,但不一定要加外键约束),这样更加灵活,并且数据的完整性同样有保证。
 
当然,“单表映射,业务控制外键关系”并不是说Hibernate的实体关联功能是多余的,Hibernate的实体关联的优点很多,随便拿本书都是讲优点,用好了会让开发人员感觉更方便,现在我也是两种方案结合使用。比如对于不很确定的两个实体,常常选用单表关联。
 
以前在初学Hibernate还没有完全搞清楚这些关联关系的时候,就是用单表映射,业务控制外键关系做的,发现没有任何问题,程序同样运行得很好。
 
看了这些是不是后悔浪费时间学习映射关系了?呵呵,Hibernate的OR Mapping是Hibernate的灵魂,我相信Hibernate的创始人比我们一般人的理解更深刻。只有学会了这些才能体会Hibernate设计者的思想。学一个东西,不光自己写代码,还应该能看懂别人的代码才行。因此系统学习这些关联映射还是大有必要的。
 
以上都是我自己的观点。欢迎在此交流讨论。
 
Hibernate在实际项目开发中,hbm.xml包括数据库脚本都是通过Xdoclet生成的,在此不采用Xdoclet的目的是为了便于理解这些映射模型。实体-数据表-映射文件 三者对比看,太直观了。
 
瞌睡了,暂时先写到此,有新思路了再补上。。。。
 
-----------------------------------------------------
 
Hibernate关联关系映射目录
│ 
├─单向关联
│  ├─  一对一外键单向关联│  ├─  一对一主键单向关联
│  ├─  一对一连接表单向关联│  ├─  一对多外键单向关联
│  ├─  一对多连接表单向关联
│  ├─  多对一外键单向关联
│  ├─  多对一连接表单向关联
│  └─  多对多单向关联
└─双向关联
    ├─  一对一外键双向关联
    ├─  一对一主键双向关联    ├─  一对一连接表双向关联
    ├─  一对多外键双向关联
    ├─  一对多连接表双向关联
    └─  多对多双向关联

Hibernate 实体关联关系映射----总结的更多相关文章

  1. Hibernate 实体关联关系映射【转】

    Hibernate关联关系映射目录│ ├─单向关联│  ├─  一对一外键单向关联│  ├─  一对一主键单向关联│  ├─  一对一连接表单向关联│  ├─  一对多外键单向关联│  ├─  一对多 ...

  2. Hibernate 实体关联关系映射(转载)

    原文链接地址:http://lavasoft.blog.51cto.com/62575/39398/ Hibernate:Hibernate关联关系映射实例速查   Hibernate关联关系映射目录 ...

  3. Hibernate之关联关系映射(一对一主键映射和一对一外键映射)

    1:Hibernate的关联关系映射的一对一外键映射: 1.1:第一首先引包,省略 1.2:第二创建实体类: 这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信 ...

  4. Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件

    原文:转:Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件 2011-04-30 12:50 很多人不知道怎么用 IntelliJ IDE ...

  5. hibernate 实体关系映射笔记

    @经常使用属性说明:     @Entity:实体类     @Table:指定相应数据表     @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态     @Col ...

  6. 框架之 hibernate之关联关系映射

    案例:完成CRM的联系人的保存操作 需求分析 1. 因为客户和联系人是一对多的关系,在有客户的情况下,完成联系人的添加保存操作 技术分析之Hibernate的关联关系映射之一对多映射(重点) 1. J ...

  7. Hibernate的关联关系映射

    技术分析之Hibernate的关联关系映射之一对多映射(重点)        1. JavaWEB中一对多的设计及其建表原则        2. 先导入SQL的建表语句                 ...

  8. Hibernate之关联关系映射(一对多和多对一映射,多对多映射)

    ~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习一下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...

  9. Hibernate学习---关联关系映射

    关联关系是用到的最多的一种关系,非常重要,在内存中反映为实体关系,映射到DB中主键外键关系,实体间的关联,即对外键的维护,关联关系的发生,即对外键数据的改变. 在这里就不赘述什么是外键什么是主键了. ...

随机推荐

  1. [0] DDD领域驱动设计(三) 之 聚合(根)、实体、值对象

    1.      聚合根.实体.值对象的区别? 从标识的角度: 聚合根具有全局的唯一标识,而实体只有在聚合内部有唯一的本地标识,值对象没有唯一标识,不存在这个值对象或那个值对象的说法: 从是否只读的角度 ...

  2. 跨域CORS

    一.跨域CORS是什么 当一个资源从与该资源本身所在的服务器的域或端口不同的域或不同的端口请求一个资源时,浏览器会发起一个跨域 HTTP 请求.出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求 ...

  3. python 标准库 -- re

    re 正则表达式 语法 import re m = re.search('[0-9]','abc4def67') # 匹配字符及匹配范围 print m.group(0) # 返回匹配结果 re.se ...

  4. javascript对象(1)

    今天说面向对象,嗯,不是那个对象,是这个对象. 接下来就开始今天的内容: 什么是面向对象: 就是把数据及数据的操作方法放在一起,作为一个相互依存的整体----对象.对同类对象抽象出其共性,形成类. 类 ...

  5. 20170422早会训话,ps:程序出现两次BUG,领导很生气

    针对这种问题: 要讲3点 1.有没有拖团队后腿: 作为一名前端开发人员,对于前端开发的任务,我能够在第一时间完成,保证时间进度,但光做到这一点是不够的,不能只讲究任务,不考虑结果,会不会出现问题造成其 ...

  6. ISO文件:AMD64和i386的区别

     下载kali系统时,出现两个选项:ADM64和i386,那么这两者的区别是什么?  i386=Intel 80386.其实i386通常被用来作为对Intel(英特尔)32位微处理器的统称. AMD6 ...

  7. 30岁程序员的选择,一线OR二线?

    作为一个30刚出头的IT行业从业者,先介绍下我自己的情况.虽然不具有代表性,但是也可以作为一个参考.本人08年本科毕业于一所还算不错的211大学计算机专业(04年去的时候综合排名38,毕业走时排名45 ...

  8. 怎么样刷新frameset的整个页面

    <a href="main.html?a=2" target="_parent">?  设置a链接的target属性值为_parent即可

  9. laydate时间插件更换皮肤

    <script> ;!function(){ laydate.skin('molv'); laydate({ elem: '#demo' }) }();</script>

  10. 解决jenkins下使用HTML Publisher插件后查看html报告显示不正常 以jmeter报告为例

    jenkins 配置使用html publisher查看jmeter html报告时,发现显示不全,很多东西显示不了.   项目配置:   查看html报告异常(很多资源无法加载):   控制台查看加 ...