我们从几个方面进行阐述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都给我们做了哪些,怎样体现它的长处

Hibernate有6大接口

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实例。同一时候,Hibernate的session不同于JSP应用中的HttpSession。

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

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

底层事务接口包含:

  • 1.jdbc  API
  • 2.JTA(JAVA 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简单介绍你了解么?

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

Hibernate一个简短的引论的更多相关文章

  1. Saiku一个简短的引论

    一个简短的引论 Saiku成立于2008年,通过Tom Barber和Paul Stoellberger研究. 最初叫Pentaho分析工具.最初是基于OLAP4J图书馆的使用GWT采用前端分析工具包 ...

  2. HSQL一个简短的引论

    前言     在对dao层写測试类的时候,我们须要一个測试数据库,一般我们会是专门建立一个真实的測试数据库,可是有了HSQLDB事情就变得简单了起来. 正题 一.简单介绍: hsql数据库是一款纯Ja ...

  3. Jsoup一个简短的引论——采用Java抓取网页数据

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/40115479 概述 jsoup 是一款Java 的HTML解析器,可直接解析某个U ...

  4. Mybatis之ResultMap一个简短的引论,关联对象

    基础部分能够查看我的还有一篇博客http://blog.csdn.net/elim168/article/details/40622491 MyBatis中在查询进行select映射的时候.返回类型能 ...

  5. Spark第一个研究笔记1一片 - Spark一个简短的引论

    该公司推出的在线项目Spark拥有近1随着时间的推移.有效,Spark事实上,优秀的分布式计算平台,以提高生产力. 开始本篇笔记.此前的研究会Spark研究报告共享出来(由于篇幅的限制,它将被划分成制 ...

  6. Cache基础知识OR1200在ICache一个简短的引论

    以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 12.1 Cache基本知识 12.1.1 Cache的作用 处理器的设计者通常会声称其设计的处理器一秒钟能做多少次乘 ...

  7. HTML5分析实战WebSockets一个简短的引论

    HTML5 WebSockets规范定义了API,同意web页面使用WebSockets与远程主机协议的双向通信. 介绍WebSocket接口,并限定了全双工通信信道,通过套接字网络. HTML5 W ...

  8. Oracle 指数 一个简短的引论

    1 索引创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>       ON <schema>.< ...

  9. PL/SQL一个简短的引论

    前言 文本 PL/SQL (Procedure Language,程序语言)SQL 1999主要的数据库供应商提供结构化的共同语言  PL/SQL只有支持Oracle数据库 基本的语法 多行凝视   ...

随机推荐

  1. Linux好书、经典书籍推荐

    Linux好书.经典书籍推荐 思想篇 <Linux/Unix设计思想> 图书将Unix与Linux的原理有效地结合起来,总结了Unix/Linux软件开发中的原则.在保留了第1版中Unix ...

  2. 数字证书及CA的扫盲介绍(转)

    ★ 先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 ...

  3. linq 中执行方法

    Database1Entities db = new Database1Entities(); protected void Page_Load(object sender, EventArgs e) ...

  4. 关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式

    近日開始将项目移植到cocos2dx 3.0版本号,出现了一些问题,UI方面眼下就发现UITextField控件不能响应退格键或者删除键,在Windows以下调试如此,我開始以为是平台支持不好,后来公 ...

  5. 13-7-5 android Tabhost功能实现

    开始使用了一个Activity做界面切换,采用visible.gone写法,感觉太麻烦了. layoutHousehold.setVisibility(View.GONE); layoutCamera ...

  6. 什么是 CGI,什么是 IIS,什么是VPS

    该公司来到天.我们所从事的事情在网站上.这对我来说确实是一个很大的挑战.个人一直从事Android,对于web而一个开发网站server知识的几乎为零.在这里应该说,现在我只是有一个技术人员,昨天相遇 ...

  7. Java EE (3) -- Java EE 6 Web Services Developer Certified Expert(1z0-897)

    Create an SOAP web service in a servlet container Create a RESTful web service in a servlet containe ...

  8. 三种方法让你的Service不被“一键加速”和系统杀掉

    基本上大家都知道提高service优先级能够在非常大程度上让你的service免于由于内存不足而被kill,当然系统仅仅是在此时先把优先级低的kill掉,假设内存还是不够,也会把你的service干掉 ...

  9. 看PHP在内部迭代的动作

    以下我们来了解怎样实现一个自己定义的迭代器,然后再開始慢慢理解迭代器的内部工作原理.先来看一个官方的样例: <? php class myIterator implements Iterator ...

  10. VS2010不能编译SQLServer2005的Microsoft.SQLServer.ManagedDTS.dll的解决方法

    VS2010不能编译SQLServer2005的Microsoft.SQLServer.ManagedDTS.dll是最近碰到的一个疑难杂症问题,通过查询微软社区和一些英文资料找到了解决方法,同事说之 ...