Hibernate知识梳理

《概念介绍回顾》

JavaEE三层结构
    1.web层:(视图) --struts2
    2.service层:(业务逻辑) --spring
    3.dao层:(数据访问) --hibernate

MVC思想
   model:模型
   view:视图
   control:控制器 

ORM思想
   Object Relational Mapping  对象关系映射
      1.hibernate使用orm思想,对数据库进行crud操作
      2.让实体类和数据库进行一一对应  
            实体类名和表名对应
            属性名和表字段名对应
      3.不需要操作数据库表,而是操作表对应的实体类对象

《hibernate框架基本操作》

1.导入相应jar包
2.实体类--也叫持久化类
3.映射配置文件 实现类库映射关系  
4.核心配置文件 

《实现添加操作》

(1)是否生成表
(2)表中是否有数据

Configuration:
    加载核心配置文件

SessionFactory*
    (1)使用configuration对象创建sessionFactory对象,
             在这过程中,它会根据核心配置文件中的配置,将表创建出来

    (2)但创建sessionFactory对象,这个过程特别消耗资源,

    (3)解决方案--写工具类
       --使用静态代码块实现,它在类加载的时候执行,且只执行一次
                   这就保证了一个项目只创建一个sessionFactory对象

Session*
    1.调用session中的各个方法,实现crud操作
        -添加和修改    
            save();
            update();
            saveOrUpdate();

        -删除     
            delete();

        -根据id主键查询--返回一条数据 即 一个对象   
            get()和load();

        -条件查询  
            createCriteria();

        -操作数据库对象
            createQuery();createSQLQuery();

    2.最大特点--单线程对象
        -session对象不能和别人共用,只能自己用
        (通俗的说,一个软件就是一个进程,它里边的各个功能,就称为线程,
           每个功能在同一时间只能操作一次,叫单线程)
        -如何保证session是绝对的单线程对象呢?
            hibernate实现与本地线程绑定session
            (1)在核心配置文件中配置
            (2)调用SessionFactory中的方法
            (3)若是使用此种方法,则最后  session资源不需要我们手动关闭

Transaction:
    提交:commit();
    回滚:rollback();

《实体类(持久化类)编写规范》

1.私有属性
2.公有get/set方法、无参构造器、toString方法
3.要求有一个属性 作为唯一值--泛指id值
4.数据类型使用相应的包装类

《主键生成策略》

1.native--整数类型,根据使用的数据库,自动适应  
    (但是eclipse工具有问题,这个没效果  我目前只能用identity)
2.uuid--使用此种主键生成策略,实体类id属性必须是字符串类型

《实体类对象状态-概念》

  -瞬时态:对象里边没有id值,对象与session没有关联--添加操作
  -持久态:对象里边有id值,对象与session有关联--id查询
  -托管态:对象里边有id值,对象与session没有关联

《hibernate的缓存》

1.一级缓存
    >> 默认就是打开的
    >> 使用范围  是session范围(从session创建 到session关闭)
    >> 存储的数据 必须是持久态数据

  验证方式:
    第一步 根据id查询(此时是进入数据库查) 
         输出对象,观察控制台会出现select语句
         说明是进入数据库查的
    第二步 再次根据id查询(此时就是进入一级缓存里查) 
         输出对象,但控制台没有出现数据库查询语句,
         这就说明第二次查询是从一级缓存中查的

      特性:在根据id进行修改的时候,
                  因为有一级缓存的存在, 底层会自动去更新库表
                  所以我们不写session.update方法,也可以实现修改功能


2.二级缓存
    >> 可以用Redis技术替代
    >> 默认不打开
    >> 使用范围 是sessionFactory范围(整个web项目)

《Hibernate事物规范写法》

1.代码结构
    try{
        加载文件、sessionFactory、session
        开启事物
        curd操作
        提交事物
    }catch(Exception){
        e.printStackTrace();--输出异常
        回滚事物
    }finally{
        关闭资源
    }

《Hiernate的api使用》

Query对象查询所有记录*
    1.hql语句: hibernate query language(hibernate查询语言)

    2.hql与sql语句的区别:
           使用sql操作表和字段
           使用hql操作实体类和属性

    3.查询所有 hql语句写法:
         from 实体类名称

    4.Query对象使用
         -调用session中的方法 创建Query对象
         -调用Query对象中的方法得到结果(返回的是list集合)

Criteria对象查询
    该对象不用写hql语句,创建对象,直接调用方法(返回的是list集合)

SQLQuery对象查询
    该对象需要写sql语句,
    创建对象,
    调用方法(返回的是list数组)
    升级优化:把返回的数组转换为对象的形式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值