ssh进阶框架之Hibernate(三)

原创 2018年04月15日 12:36:26

  今天总结的是hibernate 的多对多操作,还有继承映射和加载策略,话不多说,直接进入正题

  多对多:多对多分为单向多对多和双向多对多,但是只要会写单向的,多向的无非是再多做一次单向的,所以先从单向的开始

  首先了解单向多对多的是怎么链接的,他们是通过中间一个表,向一家三口,孩子在中间那样,小手拉大手链接起来两个表

  创建两个个实体类Student 和Teacher,莫要忘记实例化

                        

                        

  然后配置Teacher.hbm.xml 

                    

  配置Student.hbm.xml,这里不需要多做什么

                           

在做多对多的时候,发现一个问题,就是当你测试的时候会报错,错误是序列化不存在,但是当我把Hibernate的配置文件剪切复制一遍的时候,就能正常运行了

  接下来介绍继承映射,在这里仅仅介绍继承映射的一张表操作:

  特点:查询效率高,但是 有冗余

  首先编写Employee类,HourlyEmployee和SalaryEmployee继承Employee

                    

                    

                       

 继承映射的话只需编写继承类的.hbm.xml 文件

                    

    接下来是检索策略的总结:首先顾名思义检索策略就是在取数据的时候用到的,比如get,load,Query等

    为什么要用检索策略?1.减少session一级缓存的浪费     2.减少SQL语句,提高效率

    策略的分级:

    类级别的检索策略:仅影响Session的load()方法

    Session.get() 立即检索

    Session.createQuert().list() 立即检索

    Session.load() 延迟加载,返回的是代理的对象,只有oid, 减少Session一级缓存的浪费 由lazy来控制,默认是true

    建立关系的时候使用类级别的延迟加载     

关联级别的检索策略:

                                立即检索(立即加载) 

                                延迟检索(延迟加载)默认

                                迫切做外链接(lazy batch-size 影响不到)

                                影响Session 的load get以及Query(HQL的检索方式)

       当get,load.Query含有关联对象的时候不仅是查出所需要的对象,还有关联的对象默认查出,所以才用到关联级别的检索策略。在<Set>中配置lazy和fetch 和batch-size

        lazy:决定关联对象的加载的时机

        true 懒加载,false 立即加载,extra增强延迟,用到什么初始化什么

        fetch:决定查询关联对象所采用的语句

        默认select由多条sql语句组成,substring 子查询,join做连接多表查询此时的lazy失效

      hibernate提供的5中检索方式:

       1.OID检索:根据get,load检索                          

        2.对象检索:根据对象get方法

        3.HQL检索:Query

        4.QBC检索:面向多个and

        5.本地SQl检索:速度快,但是不适合hibernate 原生的JDBC+SQL



Hibernate实战-使用SSH框架技术开发学籍管理系统

本次课程主要讲了使用SSH框架技术开发学籍管理系统,其中的Hibernate部分的实现过程,包括了基础知识和进阶知识。
  • 2015年01月12日 17:00

【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

Long Long ago,就听说过SSH,起初还以为是一个东东,具体内容更是不详,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014-08-29 07:56:11
  • 20465

【SSH进阶之路】Hibernate映射——一对多关联映射(七)

一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端。关联关系都是由多端维护,一端维护多端的关系,在加载一端时,可以将多端加载上来。...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014-11-16 08:10:16
  • 17023

【SSH进阶之路】Hibernate基本映射(三)

【SSH进阶之路】Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库。 【SSH进阶之路】Hibernate搭建开发环境+简单实例...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014-10-17 08:19:27
  • 36338

【SSH进阶之路】Hibernate基本原理(一)

在开始学Hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装。一句不难,难道是真的不难还是眼高手低?       如果只是停留在使用的层面上,我相信什么技术都不难...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014-09-22 10:05:25
  • 221725

Hibernate操作数据库的3个准备和七个步骤,以及在SSH框架中Hibernate的配置。

1.// 三个准备 1.添加Hibernate支持 2.创建Hibernate.cfg.xml文件 3.创建对象与映射文件              4.   // 七个步骤   5. ...
  • yyq19890202
  • yyq19890202
  • 2014-07-24 16:53:21
  • 2132

Hibernate框架概述&SSH框架工作原理以及流程

Hibernate是一个开放源代码的对象关系映射(ORM,Object Rational Mapping)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动...
  • RobertTony_Java
  • RobertTony_Java
  • 2016-11-22 13:59:20
  • 4065

SSH框架---Struts2+hibernate实现用户登录和增删改查案例

Struts2+hibernate实现用户登录和增删改查案例 开发工具MyEclipse 10.7.1 创建一个项目 web项目project。 部署好Struts2的开发环境: ...
  • yuexianchang
  • yuexianchang
  • 2016-07-04 11:30:05
  • 4962

【SSH进阶之路】Hibernate基本原理

在开始学Hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装。一句不难,难道是真的不难还是眼高手低?       如果只是停留在使用的层面上,我相信什么技术...
  • gxjasonkidd033
  • gxjasonkidd033
  • 2014-09-22 13:52:29
  • 309

SSH:Hibernate框架(配置文件详解)

初学hibernate的童鞋,刚开应该都有这种感觉,hibernate的配置文件好麻烦,还不如jdbc访问数据库呢,直接写代码,多方便,用hibernate还要写代码,还要写配置,太麻烦了。至少我刚开...
  • qq_27550755
  • qq_27550755
  • 2015-11-27 10:24:29
  • 3467
收藏助手
不良信息举报
您举报文章:ssh进阶框架之Hibernate(三)
举报原因:
原因补充:

(最多只允许输入30个字)