Hibernate学习笔记--核心编程
参考资料: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学习笔记--核心编程相关推荐
- jsp/servlet学习笔记(核心编程)mysql部分
第十七章 访问JDBC (1)载入JDBC驱动程序 需要在Class.forName方法中指定数据库驱动程序的类型 try{ Class.forName("connect.jdbc.driv ...
- hibernate学习笔记(总结)
hibernate学习笔记 课程内容 6 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0/R框架(了解 ...
- 马士兵Hibernate学习笔记
马士兵hibernate学习笔记 课程内容 6课程内容 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0 ...
- hibernate学习笔记二
上一篇关于hibernate学习笔记一,主要是作为hibernate的入门知识.没有和spring发生任何关系,这一篇我将把spring集成进去,看spring如何管理hibernate,还有和未使用 ...
- python 学习笔记 (核心)
python 学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*- //字符编码 不区分单引号和双引号,x='hello',x[ ...
- ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)...
ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...
- python学习笔记——多线程编程
python学习笔记--多线程编程 基础不必多讲,还是直接进入python. Python代码代码的执行由python虚拟机(也叫解释器主循环)来控制.Python在设计之初就考虑到要在主循环中,同时 ...
- 学习笔记之编程达到一个高的境界就是自制脚本语言(图)
学习笔记之编程达到一个高的境界就是自制脚本语言(图) 编程达到一个高的境界就是自制脚本语言,通过这可以精通编程里面的高深的技术,如编译原理.语言处理器.编译器与解释器,这些都是代表一个程序员实力的技术 ...
- FAQ17:学习Windows核心编程有什么用?
FAQ17:学习Windows核心编程有什么用? 答: Windows核心编程:主要讲解Windows系统内部(这里仅仅指应用层)各个模块的运作机制以及该操作系统的系统理论,并且结合Windows高级 ...
最新文章
- Awesome Projects (汇聚全球所有
- 如何更改mysql的授权信息_Mysql 的用户权限等操作管理与设置(创建、授权、修改、查看)...
- 文件读取 linux_救命,Linux正在吃掉我的内存
- 美国下注15亿美元重点搞芯片!电子复兴5年计划首批入围项目曝光
- Vue工程报错解决方案Warn:import Vue from “vue“;
- 电脑位数怎么看_怎么用电脑播放4K视频?怎么用电脑看4K电影? 附带详细教程...
- 泛微协同办公平台E-cology8.0版本后台维护手册--组织权限中心
- android oppo 模拟器,小姚Android构建VIVO华为魅族OPPO小米联想手游Android模拟器
- 基于Spine动画的AVATAR换装系统优化
- STM32F4端口复用
- 毕业设计/论文答辩演讲稿通用模板
- MAYA如何做3D logo
- urlencode、unquote
- 华为IPsec实现支部与支部间借助总部进行隧道中转
- 还不了解什么是商业智能(BI)?看完这篇文章就懂了
- 转载《士兵突击》观后杂感
- 2022卡塔尔世界杯感想
- android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论
- 什么是原始股?如何购买原始股?
- 走自己的路,听别人的话
热门文章
- java正三角形程序怎么写,java实现正三角形和到正三角形
- ue如何使用php文件,UltraEdit使用设置
- 判断frame是否已创建_大白菜的ROS笔记(8)(创建TF广播和监听,内容很多,细节满满)...
- 电脑动态屏保_8款电脑软件,每一款都能让你的电脑更好用
- VMware VCP
- 课程升级 | 极速构建知识体系,即学即用 Serverless
- Arthas 初探--安装初步适用
- 明日之后服务器什么时候维护结束,明日之后什么时候合区 合区时间详解[多图]...
- 计算机网络的拓扑结构主要有新型,计算机网络中主要拓扑结构有 ______。
- python的填充色怎么弄_python中如何给图形填充颜色