1.为什么用Hibernate框架:

java程序数据保存的变化:
* 内存存在:java基础中,
    数据保存在内存中,只在内存中暂时存在
* 文件保存:有io/流之后,数据可以保存到文件中
* 数据库保存:随着数据量的增大,数据处理变多,
    如果继续保存到文件,保存和解析存在格式问题,工作量大,并且重复性高,操作繁琐并且与程序功能关系小,
    出现了数据库,对于大量数据的保存和操作都比较节约资源
* jdbc连接数据库:jdbc连接数据库,虽然数据可以保存,但每个操作都有数据库的连接,数据的读取,再解析数据转化为对象,代码重复多
* Hibernate框架:框架就是模板/模型,它把java中从数据库读数据,转化为对象供程序使用的常用代码做成一个工具黑箱,
    即对jdbc进行轻量级封装,不需要关心数据库表数据是如何变成对象的,我们只要设置好对应的映射关系,
    告诉框架我们是要取对象还是操作对象,框架自动帮我们把这些机械劳动做完,让我们把更多的精力放在程序运行设计上

2.当类之间存在包含关系,怎么在映射里体现? 

常用关系映射有四种:
1.单向一对多:
a.实体类:在一的一方添加set集合,泛型指定为多的一方类
private Set jds = new HashSet();
b.映射文件:添加<set>
<set name="jds" > //指定本类set的属性名
  <key column="qxid" /> //会在多的一方添加该列
  <one-to-many class="Jd" /> //绑定多的一方的类
</set>

2.单向多对一
a.实体类:添加一的一方的类属性
private Qx qx;
b.映射文件:添加<many-to-one>
<many-to-one name="qx" class="Qx" column="qxid" />  //在本类添加该列
指定本类要关联的属性-->指定关联的类-->指定关联的列,会在本类添加
   3.多对多:
     a.实体类:双方添加set
     b.映射文件:就一方而言,每一方都按多对一配置即可
       <set name="members" table="r_emp_proj">  //双方都有多个,需要建一个中间表来保存对应关系
              <key column="r_proj_id" />  //指定本类关联的列,对方列
              <many-to-many
                  class="com.zhaolong.entity.Employee" column="r_emp_id" />  //指定关联的类和指定关联列
          </set>
      
       <set name="projects" table="r_emp_proj" inverse="true">  //有一方放弃列的管理(理解为主键生成的权力)
             <key column="r_emp_id" />
             <many-to-many
            class="com.zhaolong.entity.Project" column="r_proj_id" />
          </set>    4.一对一:
     a.实体类:添加一的一方的类属性
       private Qx qx;
     b.映射表:双方添加<one-to-one>
       <one-to-one name="card" class="对方类全限定名" />
    
总结:书写时,先指定本方是用什么关联?  再书写关联的是什么?  用那个列来关联? 
           多对一和一对多,也可以双向关联,看具体情况,比如从本方查对方数据,就要双向关联

3.inverse cascade 怎么用?

  都是在one,many标签中用,inverse为在关联中放弃生成主键权力,cascade为指定在执行何种操作时进行级联,同步删除或更新

Hibernate-关系映射的更多相关文章

  1. Hibernate学习笔记-Hibernate关系映射

    1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1( ...

  2. 【SSH 基础】浅谈Hibernate关系映射(4)

    继上篇博客 多对多关联映射(单向) 多对多对象关系映射,须要增加一张新表完毕基本映射. Hibernate会自己主动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多 ...

  3. web进修之—Hibernate 关系映射(3)

    概述 Hibernate的关系映射是Hibernate使用的难点或者是重点(别担心,不考试哦~),按照不同的分类方式可以对这些映射关系做一个分类,如: 按对象对应关系分: 一对一 多对一/一对多 多对 ...

  4. Hibernate关系映射时出现的问题

    在学习Hibernate框架的关系映射时,遇到了一个问题: INFO: HHH000422: Disabling contextual LOB creation as connection was n ...

  5. Hibernate关系映射之many-to-many

    1.建表 2.创建实体类及映射文件 Student.java类 public class Student implements java.io.Serializable { // Fields pri ...

  6. hibernate关系映射

    多对一:比如多个订单对应同一个用户,需要在订单表中添加一个用户的属性 订单类: private Integer orderId; private Date createTime; private Us ...

  7. Hibernate关系映射(注解)

    1.类级别注解 @Entity     映射实体类 @Table    映射数句库表 @Entity(name="tableName") - 必须,注解将一个类声明为一个实体bea ...

  8. Hibernate关系映射(三) 多对多

    一.使用用户User和Role实现多对多的示例 User.java,实现对Role的引用 package com.lxit.entity; import java.util.HashSet; impo ...

  9. Hibernate关系映射(三) 多对一和一对多

    一.多对一 学生Student和班级Grade实现多对一,多个学生对应一个班级. Student.java实体类,映射了班级的属性. package com.lxit.entity; import j ...

  10. Hibernate关系映射(二) 基于外键的双向一对一

    基于外键的双向一对一关联映射 需要在一端添加<one-to-one>标签,用property-ref来指定反向属性引用. 还是通过刚才用户和地址来演示双向一对一关联. 代码演示 一.实体类 ...

随机推荐

  1. Go语言(二) 继承和重载

    继承 package main import "fmt" type Skills []string type person struct { name string age int ...

  2. 邮件营销巧妙添加GIF让您的邮件动起来

    动态图片远比静态图片要吸引人,因此近年来,一些营销人员也开始越来越频繁的使用GIF动画图片,适当的穿插和点缀动态图片,能够生动形象的表达出 主题,并且时不时令读者忍俊不禁.尤其是做邮件营销的,如果能在 ...

  3. RabbitMQ的事件总线

    RabbitMQ的事件总线 在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系 ...

  4. App上线流程全攻略(史上最具体步骤)

    @转载请保留:iOS界一迷糊小书童--->专注于iOS开发!!谢谢合作 /*****************************************1****************** ...

  5. Git bash 终止git log 命令

    Git bash中 可以通过键入: q ,结束该命令.

  6. BZOJ1396:识别子串(SAM)

    Description Input 一行,一个由小写字母组成的字符串S,长度不超过10^5 Output L行,每行一个整数,第i行的数据表示关于S的第i个元素的最短识别子串有多长. Sample I ...

  7. wampserver的安装与配置

    一.安装:wamp的安装很简单,只需要按照提示并根据自己的需求操作即可,这里不再赘述. 二.配置:wamp安装完后,需进行如下配置才能正常工作. 1.修改MySQL的登录密码 (1)启动WampSer ...

  8. VS进行调试时IIS Express显示Access Define-坑爹的腾讯TGP助手

    今天在家使用VS进行调试的时候发现IIS Express死活启动不了,改用IIS也是不行,尝试了网上所说的所有办法,改了各种权限,找了各种注册表,最终未果,然后我想起之前被腾讯坑过的那次:http:/ ...

  9. java 编写小工具 尝试 学习(一)

    1.单片机 调试经常 需要  用 串口 工具 发送 一些 特定的  协议或者 命令,每次要 翻译  写成 2进制 很麻烦 ,因此 打算自己用 java 写一个 工具 方便自己  调试,2017年3月2 ...

  10. 跟我一起写 Makefile (Linux )

    1.昨天 在 Linux 下用  touch  指令 新建了一个  hello.c 并且使用 vim 编辑器 写了代码 ,使用 gcc 指令编译 最后运行 成功了 .具体方式如下: 在Linux 根目 ...