案例:http://blog.csdn.net/jiuqiyuliang/article/details/39380465

对象关系映射框架,它对JDBC进行了轻量级的对象封装,可以使用对象编程思维来操纵数据库,实现对象持久化和事务控制。

Hibernate框架

核心类和接口

  Session接口

    非线程安全,负责执行被持久化对象的CRUD操作

    save()    临时对象->持久化对象

  Session Factory接口

    负责初始化Hibernate

  Transaction接口

    可选接口,对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的User Transaction、甚至可以是CORBA 事务。

  Query接口

    有两种表达方式:HQL语言或本地数据库的SQL语句。

    经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

  Criteria接口

    同Query,轻量级,不能在Session之外使用

  Configuration类

    对Hibernate 进行配置,负责启动Hibernate,再创建一个Session Factory对象

核心对象

JDBC   Java DataBase Connectivity    java数据库连接

l  是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

l  常用类:Driver Manager、Connection、Statement / Prepared Statement / Callable Statement、Result Set

JNDI   Java Naming and Directory Interface   Java命名和目录接口

  JNDI可访问的现有的目录及服务有:DNS、Novell目录服务、LDAP(Lightweight Directory Access Protocol轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。

 

JDO(Java Data Object)

l  是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。

l  JDBC只是面向关系数据库(RDBMS);JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

l  通过访问JDO Instance , 达到访问JDO Instance 所代表的数据对象,包括:ERP,数据库系统等,使数据的存储介质对于应用的开发人员完全透明。

JTA(Java Transaction API)和JTS(Java Transaction Services)——为J2EE平台提供了分布式事务服务(distributed transaction)

对比如下:

DAO

  • l  ⒈事务划分代码被嵌入到DAO类内部
  • l  ⒉DAO类使用JDBC API来进行事务划分
  • l  ⒊调用者没有划分事务的方法
  • l  ⒋事务范围被限定在一个单一的JDBC连接

JTA

  • l  ⒈用JTA对事务进行划分
  • l  ⒉事务划分代码被DAO分开
  • l  ⒊调用者承担划分事务的责任
  • l  ⒋DAO参与一个全局的事务中

缓存管理

第一级别的缓存,是Session级别的缓存,它是属于事务范围的缓存。

  当应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。

  当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法:

    evict(Object obj):从缓存中清除参数指定的持久化对象。

    clear():清空缓存中所有持久化对象。

第二级别的缓存是Session Factory级别的缓存,它是属于进程范围或群集范围的缓存。

** 查询缓存,依赖于第二级缓存。

延迟加载

get不支持延迟加载,load支持延迟加载。

查询语言

HQL                   根据面向对象的查询语言检索对象

导航对象图           根据已经加载的对象,导航到其他对象

OID                   根据对象标识来检索对象

QBC                  根据条件查询接口(Criteria 接口、Criterion 接口和Expression 类)实现对数据的检索

原生SQL             根据数据库的SQL 查询语句检索对象

Hibernate(Control)的更多相关文章

  1. Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解

    在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...

  2. Hibernate(四)基本映射

    映射的概念 在上次的博文Hibernate(三)Hibernate 配置文件我们已经讲解了一下 Hibernate中的两种配置文件,其中提到了两种配置文件的主要区别就是XML可以配置映射.这里提到的映 ...

  3. Hibernate(三)Hibernate 配置文件

    在上次的博文Hibernate(二)Hibernate实例我们已经通过一个实例的演示对Hibernate 的基本使用有了一个简单的认识,这里我们在此简单回顾一下Hibernate框架的使用步骤. Hi ...

  4. Hibernate(二)Hibernate 实例

    上篇Hibernate(一)JDBC简介,我们主要对JDBC进行了简单介绍和使用说明,这次我们做一个Hibernate简单实例,通过这个实例对比Hibernate和JDBC,了解Hibernate的优 ...

  5. 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化

    准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...

  6. Hibernate(四):Hello World

    下载hibernate开发包: 在本章之前需要继承hibernate开发插件到eclipse,详细操作请参考我的博文:<Hibernate(一):安装hibernate插件到eclipse环境& ...

  7. 一口一口吃掉Hibernate(五)——一对多单向关联映射

    版权声明:本文为博主原创文章,未经博主允许不得转载.如需转载请声明:[转自 http://blog.csdn.net/xiaoxian8023 ] 在上一篇博客<一口一口吃掉Hibernate( ...

  8. Mac下常用按键符号⌘(command)、⌥(option)、⇧(shift)、⇪(caps lock)、⌃(control)、↩(return)、⌅(enter)

    常用符号如下: ⌘(command) ⌥(option) ⇧(shift) ⇪(caps lock) ⌃(control) ↩(return) ⌅(enter) 对应键盘的位置如下: 如果每次都不记得 ...

  9. OpenLayers 3 之 地图控件(control)

    OpenLayers 3 之 地图控件(control) 地图控件(control)是指地图上比例尺,缩略图,拉近拉远的按钮,滚动控制条等控件,默认控件有三个,可以禁用. OpenLayers 3 之 ...

随机推荐

  1. 利用github pages创建简单的网站

    github.com 作为最流行的源代码管理工具已经风靡全球,同时在依托于github也衍生出了各种各样的应用,比如可以利用github搭建博客系统等等. 先换个话题,我们每人手头都或多或少有些&qu ...

  2. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  3. iOS---关于UIWebView

    1.加载的web界面可以自由收缩 webView.scalesPageToFit = YES;

  4. iOS真机测试could not find developer disk image

    兄弟你该升级xcode的了,xcode的版本已经落后于手机的iOS版本了

  5. 使用Fiddler抓取手机请求

    使用Fiddler抓取手机请求 Fiddler 手机 今天想尝试在手机上抓包,发现一个好玩的小工具——Fiddler. Fiddler是一个专门的抓包工具,可以模拟请求,修改请求,手机应用调试等.还是 ...

  6. [Erlang 0129] Erlang 杂记 VI

    把之前阅读资料的时候记下的东西,整理了一下. Adding special-purpose processor support to the Erlang VM   P23 简单介绍了Erlang C ...

  7. redis主从

    安装: tar -zxvf redis-3.2.6.tar.gz cd redis-3.2.6make make installcd utils/ sh install_server.sh 主: 配置 ...

  8. jq focus 在火狐(Firefox)下无效

    今天写代码的时候发现,在blur事件里面写focus获取焦点无效, $input.blur(function(){ ……………… $input.focus(): } 而且只是在火狐下面无效而已,很明显 ...

  9. [转载]跨域iframe高度自适应

    场景: 经常会有这样的需求,跟外部合作伙伴合作,要嵌入别人的页面,这时候就需要高度自适应了,在这种跨域的情况下如何解决呢? 解决: 在iframe(合作伙伴的页面,称为P页面)中创建一个隐藏的ifra ...

  10. monkey之monkey命令详解

    四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...