SSH——Hibernate

什么是Hibernate 框架???:

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

     Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

ORM 框架:

ORM是一种思想

  • O代表的是Objcet
  • R代表的是Relative
  • M代表的是Mapping。

Hibernate框架的优点;

     1. 是Java应用与关系数据库之间的桥梁,与JDBC方式操作数据库相比,它提高了持久化代码之间的开发速度,降低了维护成本。

     2. 支持许多面向对象的特性,如组合,继承,多态等,方便开发人员进行领域驱动的面向对象的设计与开发。

    3.可移植性好。 系统不会绑定在某个特定的关系型数据库上,对于系统更换数据库,通常只需要修改hibernate 配置文件即可正常运行。

    4. Hibernate 框架开源免费, 可以在需要时研究源代码,改写源代码,进行功能的定制 ,具有可拓展性。

 

Hibernate的缺点:

(1) 不适合以数据为中心大量使用存储过程的应用。

(2) 大规模的批量插入,修改和删除不适用使用Hibernate。

Hibernate缓存:

       Hibernate一级缓存是Session缓存利用好一级缓存就需要对Session的生命周期进行管理好。建议在一个Action操作中使用一个Session。一级缓存需要对Session进行严格管理。

       Hibernate二级缓存是SessionFactory级的缓存 SessionFactory的缓存分为内置缓存和外置缓存。内置缓存中存放的是SessionFactory对象的一些集合属性包含的数据(映射元素据及预定SQL语句等),对于应用程序来说,它是只读的。外置缓存中存放的是数据库数据的副本,其作用和一级缓存类似.二级缓存除了以内存作为存储介质外,还可以选用硬盘等外部存储设备。二级缓存称为进程级缓存或SessionFactory级缓存,它可以被所有session共享,它的命周期伴随着SessionFactory的生命周期存在和消亡。

 

Hibernate 与 MyBatis 的对比:

    两者相同点:

         Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,   SessionFactory,Session的生命周期都是差不多的。
        Hibernate和MyBatis都支持JDBC和JTA事务处理。

    一 , 都属于ORM框架。为数据层提供持久化操作的支持。

——a, 相对于MyBatis的 “SQL--Mapping” 的ORM实现,Hibernate的ORM实现更加完善,提供了对象状态管理的功能。Hibernate对数据库的操作,针对的是Java对象,即使使用Hibernate的查询语言(HQL 语句) ,其书写规则也是面向对象的。

——b. Hibernate 与具体数据库的关联只需要在XML中配置即可, Hibernate开发者不需要关注SQL的生成与结果的映射,所有的HQL语句与具体使用的数据库无关,便于修改,可移植性好。而 MyBatis 直接使用SQL语句,不同于数据库之间可能会有差异,修改工移植性差作量大,可。

——c  由于直接使用SQL语句,因此MyBatis的使用灵活性更高,而Hibernate对于关系模型设计不合理,不规范的系统则不适用。在不考虑缓存的情况下, MyBatis 的执行效率也比Hibernate 高一些。

  不同点:

         (1) sql方面:mybaits通过mapper.xml维护映射结果,程序员手动编写sql相比hibernate自动生成hql(hibernate sql)更加灵活,sql调优更加容易(hibernate因为更好的封装性,开发效率提高的同时,sql语句调优要更费力,当然可以手动修改sql来优化,但是同时也会影响开发效率); hibernate的hql数据库移植性更好,体现在强壮性。hibernate在级联删除的时候效率低;数据量大, 表多的时候,基于关系操作会变得复杂。

         (2) 缓存方面:mybatis和hibernate都可以使用第三方缓存,而hibernate相比maybatis有更好的二级缓存机制。

 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值