码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate简介

时间:2017-03-11 16:01:31      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:表示   持久化   分享   margin   api   sdn   细节   .com   对象   

 

 1. Hibernate是什么

 

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

 

2. 自己对Hibernate的理解

  首先,Hibernate是一个持久化开源框架。

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

  其次,Hibernate应该位于哪里?

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

    技术分享

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

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

  最后,Hibernate是怎样工作的?

  技术分享

 

      这里先理解一个概念ORM:ORM是利用描述对象和数据库之间映射的元数据,自动地将Java应用程序中的对象持久化到数据库中的表。 对于Hibernate来说,Hibernate是利用*.hbm.xml文件或注解,描述Java应用程序中的实体类和字段(还有对象之间的联系)与数据库中的哪个table和哪个column相对应的。

 

 3. 为什么要使用Hibernate(Hibernate的优点)? 

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

 

 4. Hibernate缺点

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

 

 5.总结

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

 

Hibernate简介

标签:表示   持久化   分享   margin   api   sdn   细节   .com   对象   

原文地址:http://www.cnblogs.com/yuanhaha/p/6535009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!