JavaEE学习之Hibernate框架

一,Hibernate简介

Hibernate是一种ORM框架,全称为Object Relative-Database Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象。

关于映射Java对象和关系数据库之间的联系的话,传统上在MVC中的数据持久层->编写程序中的DAO层实现:
1. 在DAO层操作XML,将数据封装到XML文件上,读写XML文件数据实现CRUD
2. 在DAO层使用原生JDBC连接数据库,实现CRUD
3. 使用DbUtils组件封装JDBC
当插入数据的时候,将JavaBean对象拆分,拼装成SQL对象
当查询数据的时候,用SQL把数据库表中的列组合,拼装成JavaBean对象

也就是说,JavaBean对象和数据表中的列存在映射关系。如果程序能自动生成SQL语句,就会很大程度简化开发。

一些概念:

DAO层:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此

XML:可扩展标记语言(英语:Extensible Markup Language,简称:XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。

CRUD: crud是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。

JavaBean:JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。

二,Hibernate入门

具体操作:

引入JAR包,配置相关的XML文件
编写对象映射->.hbm.xml,一般和JavaBean对象放在同一目录下
熟悉API :session/Query/Session Factory/
SessionFactory-->Session的工厂
Session是Hibernate最重要的对象,Session维护了一个连接(Connection),只要使用Hibernate操作数据库,都需要用到Session对象,执行很多CRUD操作。


Hibernate工作原理:

    1.读取并解析配置文件
    2.读取并解析映射信息,创建SessionFactory
    3.打开Sesssion
    4.创建事务Transation
    5.持久化操作
    6.提交事务
    7.关闭Session
    8.关闭SesstionFactory

三,Hibernate重要概念机制

Ⅰ Hibernate的查询方式:

对象导航查询(object composition)

HQL查询
        1、 属性查询
        2、 参数查询、命名参数查询
        3、 关联查询
        4、 分页查询
        5、 统计函数

QBC查询
SQLQuery本地SQL查询

其中HQL查询是hibernate提供的面向对象的查询语言,用来查询对象以及属性,和SQL的区别:

1.可以查询对象以及属性 2. 区分大小写 3. 跨平台 4.简略
QBC查询:完全的面向对象查询


Ⅱ Hibernate的缓存机制:
一级缓存:

    Hibenate中一级缓存,也叫做session的缓存,它可以在session范围内减少数据库的访问次数! 只在session范围有效! Session关闭,一级缓存失效!
    只要是持久化对象状态的,都受Session管理,也就是说,都会在Session缓存中!
    Session的缓存由hibernate维护,用户不能操作缓存内容; 如果想操作缓存内容,必须通过hibernate提供的evit/clear方法操作。

二级缓存:

    二级缓存是基于应用程序的缓存,所有的Session都可以使用,生命周期和SessionFactory一致
    Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可; 不想用,直接移除,不影响代码。
    如果用户觉得hibernate提供的框架框架不好用,自己可以换其他的缓存框架或自己实现缓存框架都可以。
    Hibernate二级缓存:存储的是常用的类

查询缓存:

Hibernate为查询提供缓存,用来提高查询速度,优化HQL性能。

 

?JDBC hibernate 和 mybatis 的区别:

jdbc:手动

    手动写sql
    JDBC只管连接到数据库,然后创建SQL语句,查询并返回结果

mybatis的特点:半自动化

    sql要手动写
    delete、insert、update:直接传入一个对象
    select:直接返回一个对象

hibernate:全自动

    不写sql,自动封装,
    delete、insert、update:直接传入一个对象
    select:直接返回一个对象

hibernate完全可以通过对象关系模型实现对DB的操作,而MyBatis仅有字段映射,仅要手写SQL来实现和管理。不过Mybatis上手性更强,它的sql写在xml里,优化sql要方便的多,简单直接。

参考:https://segmentfault.com/a/1190000013568216#articleHeader18

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值