参考资料:Java Web核心框架

http://blog.csdn.net/lsh6688/article/details/7611950

补充:ThreadLocal的使用:http://www.cnblogs.com/gnivor/p/4440776.html

Part 1.hibernate核心接口层次架构关系

图:hibernate核心接口层次架构关系

上图中,Hibernate的接口大致可以分为以下几种类型:

1. 基本操作类:一些被用户的应用程序调用的,用来完成基本的创建、读取、更新、删除操作以及查询操作的接口。这些接口是Hibernate实现用户程序的商业逻辑的主要接口,它们包括Session、Transaction和Query。

2. 配置类:Hibernate用来读取诸如映射表这类配置文件的接口,典型的代表有Configuration类。

3. 回调(Callback)接口:它允许应用程序能对一些事件的发生作出相应的操作,例如Interceptor、Lifecycle和Validatable都是这一类接口。

4. 一些可以用来扩展Hibernate的映射机制的接口:例如UserType、CompositeUserType和IdentifierGenerator。这些接口可由用户程序来实现(如果有必要)。

  Hibernate使用了J2EE架构中的如下技术:JDBC、JTA、JNDI。其中JDBC是一个支持关系数据库操作的一个基础层;它与JNDI和JTA一起结合,使得Hibernate可以方便地集成到J2EE应用服务器中去。

Part 2.常用核心接口及相互关系

常用核心接口有6个:Session、SessionFactory、Configuration、Transaction、Query、Criteria

图:接口类的产生关系

Session接口:

Session接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session 的开销太大,会给系统带来不良影响。但是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。 session可以看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作, 诸如存储持久对象至数据库,以及从数据库从获得它们。需要注意的是,Hibernate的session不同于JSP 应用中的HttpSession。当我们使用session这个术语时,我们指的Hibernate 中的session,而我们以后会将HttpSesion 对象称为用户session。

SessionFactory接口:

SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

Transaction接口:

Transaction接口负责事务相关的操作,一般在Hibernate的增删改中出现,但是使用Hibernate的人一般使用Spring去管理事务。

Query和Criteria接口:

Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。它的返回值一般是List。需要自己转换。

Configuration接口:

Configuration对象用于配置并启动Hibernate。Hibernate应用通过Configuration实例来指定对象—关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。在Hibernate启动过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory实例。我们可以查看Configuration的源代码,它的configure()方法是这样实现的:

public Configuration configure() throwsHibernateException {configure("/hibernate.cfg.xml" );//此处指定了ORM文件的位置return this;
}

转载于:https://www.cnblogs.com/gnivor/p/4440184.html

Hibernate学习笔记--核心编程相关推荐

  1. jsp/servlet学习笔记(核心编程)mysql部分

    第十七章 访问JDBC (1)载入JDBC驱动程序 需要在Class.forName方法中指定数据库驱动程序的类型 try{ Class.forName("connect.jdbc.driv ...

  2. hibernate学习笔记(总结)

    hibernate学习笔记 课程内容 6 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0/R框架(了解 ...

  3. 马士兵Hibernate学习笔记

    马士兵hibernate学习笔记 课程内容 6课程内容 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0 ...

  4. hibernate学习笔记二

    上一篇关于hibernate学习笔记一,主要是作为hibernate的入门知识.没有和spring发生任何关系,这一篇我将把spring集成进去,看spring如何管理hibernate,还有和未使用 ...

  5. python 学习笔记 (核心)

    python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[ ...

  6. ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)...

    ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...

  7. python学习笔记——多线程编程

    python学习笔记--多线程编程 基础不必多讲,还是直接进入python. Python代码代码的执行由python虚拟机(也叫解释器主循环)来控制.Python在设计之初就考虑到要在主循环中,同时 ...

  8. 学习笔记之编程达到一个高的境界就是自制脚本语言(图)

    学习笔记之编程达到一个高的境界就是自制脚本语言(图) 编程达到一个高的境界就是自制脚本语言,通过这可以精通编程里面的高深的技术,如编译原理.语言处理器.编译器与解释器,这些都是代表一个程序员实力的技术 ...

  9. FAQ17:学习Windows核心编程有什么用?

    FAQ17:学习Windows核心编程有什么用? 答: Windows核心编程:主要讲解Windows系统内部(这里仅仅指应用层)各个模块的运作机制以及该操作系统的系统理论,并且结合Windows高级 ...

最新文章

  1. Awesome Projects (汇聚全球所有
  2. 如何更改mysql的授权信息_Mysql 的用户权限等操作管理与设置(创建、授权、修改、查看)...
  3. 文件读取 linux_救命,Linux正在吃掉我的内存
  4. 美国下注15亿美元重点搞芯片!电子复兴5年计划首批入围项目曝光
  5. Vue工程报错解决方案Warn:import Vue from “vue“;
  6. 电脑位数怎么看_怎么用电脑播放4K视频?怎么用电脑看4K电影? 附带详细教程...
  7. 泛微协同办公平台E-cology8.0版本后台维护手册--组织权限中心
  8. android oppo 模拟器,小姚Android构建VIVO华为魅族OPPO小米联想手游Android模拟器
  9. 基于Spine动画的AVATAR换装系统优化
  10. STM32F4端口复用
  11. 毕业设计/论文答辩演讲稿通用模板
  12. MAYA如何做3D logo
  13. urlencode、unquote
  14. 华为IPsec实现支部与支部间借助总部进行隧道中转
  15. 还不了解什么是商业智能(BI)?看完这篇文章就懂了
  16. 转载《士兵突击》观后杂感
  17. 2022卡塔尔世界杯感想
  18. android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论
  19. 什么是原始股?如何购买原始股?
  20. 走自己的路,听别人的话

热门文章

  1. java正三角形程序怎么写,java实现正三角形和到正三角形
  2. ue如何使用php文件,UltraEdit使用设置
  3. 判断frame是否已创建_大白菜的ROS笔记(8)(创建TF广播和监听,内容很多,细节满满)...
  4. 电脑动态屏保_8款电脑软件,每一款都能让你的电脑更好用
  5. VMware VCP
  6. 课程升级 | 极速构建知识体系,即学即用 Serverless
  7. Arthas 初探--安装初步适用
  8. 明日之后服务器什么时候维护结束,明日之后什么时候合区 合区时间详解[多图]...
  9. 计算机网络的拓扑结构主要有新型,计算机网络中主要拓扑结构有 ______。
  10. python的填充色怎么弄_python中如何给图形填充颜色