zoukankan      html  css  js  c++  java
  • 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主要用来实现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也有自己的弱点。

            首先是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它是最实用。

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

    请指正。



  • 相关阅读:
    脑洞大开的爬虫解决思路 转载:https://mp.weixin.qq.com/s/Bd-wz_RiRpYv8ufIbQTZDg
    js逆向某东滑块 转载 https://mp.weixin.qq.com/s/eZSTfduYS63-LOvkAofxqA
    不能爬小程序,叫什么会爬虫 【参考资料也要看】 https://mp.weixin.qq.com/s/oDG3k_qjMZaoygZmz9OUDw
    HDU6042 Journey with Knapsack
    HDU7073 Integers Have Friends 2.0
    CF1439C Greedy Shopping
    CF813E Army Creation
    POJ1322 Chocolate
    CF451E Devu and Flowers
    POJ3734 Blocks
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4607515.html
Copyright © 2011-2022 走看看