• Hibernate一个简短的引论


    我们从几个方面进行阐述Hibernate

    When? What ?

    How?

    When?

     Hibernate由来是因为当时EJBBean1.1在处理entittBean架构时,花费的时间要比业务逻辑很多其它并且限制也太多。

    Gavin King。一个充满激情,脾气倔强。不言败的人,在2001花费了两年时间,开发出了称为全世界流行的O/R Mapping

    工具。

    What?

    了解了历史,再看看Hibernate是什么?

     Hibernate是一个对象关系映射(ORM框架,它对JDBC进行了很轻量级的对象封装,使得能够使用对象编程思维

    来操纵数据库。看到这里应该了解到Hibernate也是一个持久层框架。

     ORM的简单规则:

    类跟表相应

    类属性与表字段相应

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

    一个类可与多个表相应,一个表也可相应多个类

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


    How?

    Hibernate都给我们做了哪些,怎样体现它的长处

    Hibernate6大接口

    Session、SessionFactory、Transaction、Query、Criteria和Configuration

    接口间关系


    (图片引自http://blog.csdn.net/jiuqiyuliang/article/details/39078749

    自上而下的调用

    1Configuration接口:负责配置并启动Hibernate,创建SessionFactory对象。

    在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

    2SessionFactroy接口:负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。

    • 它是线程安全的,这意味着它的同一个实例能够被应用的多个线程共享。

    • 它是重量级的,这意味着不能任意创建或销毁它的实例。假设应用仅仅訪问一个数据库,仅仅须要创建一个SessionFactory实例

    3Session接口:负责运行被持久化对象的CRUD操作(CRUD:增读更删)

    但须要注意的是Session对象是非线程安全的。因此在设计软件架构的时候,应该避免多个线程共享一个Session实例。同一时候,Hibernatesession不同于JSP应用中的HttpSession

    4QueryCriteria接口:QueryCriteria接口负责运行各种数据库查询。它能够使用HQL语言或SQL语句两种表达方式。

    5Transaction接口:是Hibernate的数据库的数据库事务接口,它对底层的事务接口做了封装。

    底层事务接口包含:

    •    1.jdbc  API
    •    2.JTAJAVA Transation API
    •    3.CORBA(Common Object Request Broker Architecture) API

     

    不论什么事物都有两面,Hibernate也不例外

    Hibernate长处:

    • 使用简单介绍的hql语句,如插入数据:原来的做法是:insert into 表名称 alue(值1。值2。值3,……),而如今的做法是:save(对象)。
    • 简化了DAO层编码工作。使开发更对象化了
    • 移植性好,支持各种数据库,假设换个数据库仅仅要在配置文件里变换配置就能够了,不用改变hibernate代码
    • 支持透明持久化。透明是针对上层而言的

    Hibernate缺点:

    • 若是大量数据批量操作。则不适合使用Hibernate。
    • 复杂表操作就Over

    小结:

    了解了Hibernate的来源,以及它的工作原理和优缺点。

    相信不会再说Hibernate不了解了吧。对于ORM的框架,有多种,如:Nhibernate,Entity,EJB.我们首先要了解整体,细节一定会明确的,可是不能一下子就扎进去了。

    Hibernate简单介绍你了解么?

     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Lua如何管理”package”
    Lua: 好的, 坏的, 和坑爹的
    Lua中metatable和__index的联系
    Lua5.3 注册表 _G _ENV
    采访 Lua 发明人的一篇文章
    Lua的函数调用和协程中,栈的变化情况
    理解 Lua 的那些坑爹特性
    高性能 Lua 技巧(译)
    LLVM每日谈21 一些编译器和LLVM/Clang代码
    上Https 和 http 差分
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4850242.html
Copyright © 2020-2023  润新知