Hibernate之旅二:Hibernate简介

 

 一. Hibernate是什么 

  以下是摘自百度百科对Hibernate的介绍:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

 

 二. 自己对Hibernate的理解

  1. Hibernate是一个轻量级的ORM持久化开源框架,解决的是对象/关系范式不匹配的问题。用大白话说就是Java对象和属性与关系数据库中的表和字段不能直接一一对应,Hibernate像翻译官一样解决它们之间不能直接匹配的问题。

      这里有一个很基本的概念ORM:ORM是利用描述对象和数据库之间映射的元数据,自动地将Java应用程序中的对象持久化到数据库中的表。

  下面是ORM基本对应规则,也就是Java实体类和属性与数据库表与字段是怎么对应的。

    ①类和表对应

    ②类的属性和表的字段相对应

    ③类的实例与表中一条具体的记录相对应

    ④一个类可以对应多个表,一个表也可以对应多个类

    ⑤DB中的表可以没有主键,但是Java对象中必须设置主键字段

    ⑥DB中表与表的关系,比如外键,映射成Object之间的关系

    ⑦Java对象中属性的个数和名称可以和表中定义的字段个数和名称不一样

 

ORM原理

  

 

   对于Hibernate来说,Hibernate是利用*.hbm.xml文件,描述Java应用程序中的实体类和属性(还有对象之间的联系)与数据库中的哪个表和哪个字段相对应的。对于上图来说,UserModel类怎么映射到数据库中Tbl_user表,是使用UserModel.hbm.xml文件进行描述的。

Hibernate工作原理

 

  上面说到什么是ORM以及Hibernate是怎么利用ORM工作的。另外还有一个概念是持久化。

  持久化是应用程序开发中的基本概念之一,如果一个信息系统没有在断电的时候保存数据,那么这个系统就没有什么实用价值了。在Java中谈到持久化时,一般是指利用SQL在关系数据库中存储数据

  2.Hibernate应该位于哪里

  几乎所有结构良好的软件都使用了分层设计。我们来看一看遵循德米特法则的典型分层策略以及Hibernate在该分层中的位置。

    

  关于什么是表现层、业务逻辑层、业务模型对象(也就是DTO)相信大家都比较熟悉。这里只简单的介绍一下持久层:

    • 抽象层:为持久层提供一致且有意义的接口。它是一组类和方法的集合。这些类和方法是持久层实现细节的外观模式。其中最常用的是DAO模式。
    • 持久化框架:这就是Hibernate所在的位置。持久化框架负责与数据库驱动程序(或者接口)交互,提供数据的更删改查方法。
    • 驱动程序/接口层:负责在底层与存储设备进行通信和交换数据。

 

 三. 为什么要使用Hibernate(Hibernate的优点)? 
  • 对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想 
  • 透明持久化(persistent)带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)
  • 事务Transaction(org.hibernate.Trans2017-03-11action)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。
  • 它没有侵入性,即所谓的轻量级框架
  • 移植性会很好
  •  缓存机制,提供一级缓存和二级缓存
  • 简洁的HQL编程 
  • 另外说一句题外话,JDBC不是不好,相反它是很好!JDBC稳如狗、效率也比大多数持久化框架高要高,因为很多持久化框架都是构建在JDBC之上的,原生态JDBC只是比较繁琐而已。

 

 四. Hibernate缺点

  • Hibernate在批量数据处理时有弱势 。
  • 针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用Hibernate,这也是OR框架的弱点; 要使用数据库的特定优化机制的时候,不适合用Hibernate。 
  • 当对DB没有完全控制权的时候最好不要使用Hibernate。有些项目中,DB由专门的小组维护,对DB的更改受到严格的控制。而Hibernate对DB的结构是有某种假设的。也就是说Hibernate对DB是有要求的。这时候使用Mybatis更加方便。
  • Hibernate的学习曲线较高。相比学习Mybatis来说,学习Hibernate会稍微困难一些。

 

 五. 总结

  对Hibernate有一个大致概念。知道它是什么、它是怎样进行工作的、开发中它应该在哪儿使用以及它的优点和缺点。接下来从Hibernate的配置文件开始,一一解析Hibernate。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值