Hibernate进化史-------Hibernate概要

一个、Hibernate概要

       什么是Hibernate呢?首先,Hibernate是数据持久层的一个轻量级框架。实现了ORMapping原理(Object Relational Mapping)。

      在说hibernate之前,简单说一下什么是ORM。

      ORMapping基本相应规则:(这是查到的一些资料,有些规则。还没有考究)

      1:类跟表相相应

      2:类的属性跟表的字段相相应

      3:类的实例与表中详细的一条记录相相应

     4:一个类能够相应多个表。一个表也能够相应对个类

     5:DB中的表能够没有主键。可是Object中必须设置主键字段

     6:DB中表与表之间的关系(如:外键)映射成为Object之间的关系 

     7:Object中属性的个数和名称能够和表中定义的字段个数和名称不一样

 

     ORMapping的基本实现方式:

     使用JDBC,用SQL来操作数据库,仅仅是看动态生成还是人工写代码来实现。

     大家想想,我们曾经是怎么做的?

     Hibernate进化史-------Hibernate概要_第1张图片

      如今Hibernate做了什么呢??它做了下图工作

      Hibernate进化史-------Hibernate概要_第2张图片

       

        如上图:Hibernate主要用来实现Java对象和表之间的映射,同一时候提供訪问数据的CRUD方法,取代手工书写SQL语句的繁琐,降低拼写错误。这样在非常大程度上降低了开发过程人工使用SQL和JDBC处理数据的时间。

       

     适用Hibernate的长处

     1.使用简单介绍的hql语句(Hibernate query language)。能够不使用传统的insert。update等sql语句。比方insert一个对象。原来的做法是:insert into 表名称 alue(值1。值2。值3。……)。而如今的做法是:save(对象)。

      2.使用or映射。对象到关系数据库之间的映射。是从对象的角度操作数据库。再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而如今Hibernate做法是:直接由对象映射到表。

       3.没有侵入性。移植性比較好。

什么是没有侵入性?就是Hibernate採用了pojo对象。

所谓的pojo对象就是没有继承Hibernate类或实现Hibernate接口。

这种话。此类就是一个普通的java类,所以移植性比較好。  

       4.支持透明持久化。透明是针对上层而言的。三层架构的理念是上层对下层的依赖。仅仅是依赖接口不依赖详细实现。而Hibernate中的透明是指对业务逻 辑层提供了一个接口session,而其它的都封装隐藏。持久化是指把内存中的数据存放到磁盘上的文件里。

        5、消除数据库差异。(事实上能够说这是ORM的长处)Hibernate能够帮助你消除或者包装那些针对特定厂商的SQL代码。而且帮你把结果集从表格式的表示形式转换到一系列的对象去。

当然数据持久层的框架有非常多比方:iBATIS,myBatis,Nhibernate,Siena等等。

     Hibernate进化史-------Hibernate概要_第3张图片

  

Hibernate的还有一面  

        不论什么一个事物存在两面性,不可能十全十美,即使如此优秀的Hibernate也有自己的弱点。

        首先是Hibernate不适用的范围。有例如以下两点:

            1、若是大量数据批量操作。

则不适合使用Hibernate。

            2、而且一个持久化对象不能映射到多张表中。

        其次是“抽象”带来的“职业病”,抽象就以为这“通用性”好。那么可想而知。对于“特殊”情况。hbibernate就不擅长了。

Hibernate的特长是封装太好,所以,假设想要操作适用于某类型数据库的特性,就仅仅能“saysorry”了。

Hibernate中核心5个接口

          1.Configuration接口:负责配置及启动Hibernate,用来创建sessionFactory

          2.SessionFactory接口:一个 SessionFactory相应一个数据源存储。也就是一个数据库相应一个       SessionFactory。

SessionFactory用来创建 Session对象。而且SessionFactory是线程安全的,能够由多个线程訪问SessionFactory共享。

          3.Session接口:这个接口是Hibernate中经常使用的接口。主要用于对数据的操作(增删改查)。

而这个Session对象不是线程安全的。不能共享。

          4.Query接口:用于数据库的查询对象。

          5.Transaction接口:Hibernate事务接口。它封装了底层的事务操作,比方JTA(;java transcation architecture)全部的数据操作,比方增删改查都写在事务中。


        总结:Hibernate的目标是对于开发人员通常的数据持久化相关的编程任务,解放当中的95%。

对于以数据为中心的程序来说,它们往往仅仅在数据库中使用存储过 程来实现商业逻辑,Hibernate可能不是最好的解决方式;对于那些在Java的应用程序的中间层。他们面向对象的应用程序的业务模型和业务逻辑。Hibernate它是最实用。

主要概念和核心接口已经出台,也许对于,请听下回分解。

请指正。



你可能感兴趣的:(Hibernate)