• Hibernate-关系映射


    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为指定在执行何种操作时进行级联,同步删除或更新

  • 相关阅读:
    JAVA视频网盘分享
    IntelliJ IDEA 2016 完美破解+汉化补丁
    献给java求职路上的你们
    java集合类
    MyEclipse编码设置
    国内外有名的java论坛
    百度编辑器ueditor的简单使用
    工厂模式
    Java静态工厂的理解
    git clone index-pack failed
  • 原文地址:https://www.cnblogs.com/hackxiyu/p/6895189.html
Copyright © 2020-2023  润新知