Hibernate的几个关键类的详解及Hibernate的运行过程
Configuration 类
Configuration 类负责管理 Hibernate 的配置信息。包括如下内容:
Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。
持久化类与数据表的映射关系(*.hbm.xml 文件)
创建 Configuration 的两种方式
1,xml文件(hibernate.cfg.xml) (常用这种方法 )
Configuration cfg = new Configuration(); cfg.configure() ;
2,属性文件(hibernate.properties):
Configuration cfg = new Configuration();
SessionFactory接口
构造 SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象。
session接口
Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection。
持久化类与 Session 关联起来后就具有了持久化的能力。
是线程不安全的
Session 类的方法:
取得持久化对象的方法: get() load()
持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()
开启事务: beginTransaction().
管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等
Transaction接口
代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。(hibernate属于持久层里的框架)
crud都要在开启事务下完成(因为事务会涉及到刷新一级缓存)
Transaction tx = session.beginTransaction();
常用方法:
commit():提交相关联的session实例
rollback():撤销事务操作
wasCommitted():检查事务是否提交
Hibernate运行过程
1、应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,
2、并用这些信息生成一个SessionFactory对象,
3、然后从SessionFactory对象生成一个Session对象,
4、并用Session对象生成Transaction对象;
A、可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载、保存、更新、删除、等操作;
B、在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象
执行查询操作;
5,如果没有异常Transaction对象将提交这些操作到数据库中。即事务提交
6,最后关闭session(即关闭数据库连接池的连接),释放资源
转载于:https://www.cnblogs.com/wzhBlog/archive/2013/03/15/2962288.html
Hibernate的几个关键类的详解及Hibernate的运行过程相关推荐
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- .net System.Web.Caching.Cache缓存类使用详解(转载)
转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...
- ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解
一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...
- Java记录 -22- Java的基类Object详解
Java的基类Object详解 Java的JDK文档要经常查阅使用,最好查看英文的文档. Oracle官方在线 Java API Specifications http://www.oracle.co ...
- C#中NameValueCollection类用法详解
C#中NameValueCollection类用法详解,1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCol ...
- pythonsvc_sklearn-SVC实现与类参数详解
sklearn-SVC实现与类参数 它是基于libsvm实现的.随着样本数量的增加,拟合时间的复杂度要高于二次,这就使得当样板数量超过一万个时,很难扩展到数据集中. 在多类处理时,是按照1对1的方案进 ...
- laravel 如何 new php 类,PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解...
<PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解>要点: 本文介绍了PHP实例:laravel通过创建自定义artisan make命令来新建类文件详 ...
- (117)System Verilog类继承详解
(117)System Verilog类继承详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类继承详解 5)结语 1.2 FPGA ...
- (116)System Verilog类合成(类包含关系)详解
(116)System Verilog类合成(类包含关系)详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类合成(类包含关系)详解 ...
最新文章
- ASP.NET MVC Framework 系列
- Ubuntu系统常用命令
- VMware vsphere 中创建虚拟机的方法
- 世界各地区5G信道一览表[转载,仅作保存使用]
- C# 操作word之在表格中插入新行、删除指定行
- 权重衰减(weight decay)
- 所有家中常见物品的英文单词
- 荣事达Royalstar无叶暖风机——功能逻辑与能耗分析
- Mac 通过openCV打开摄像头权限
- YOLO的cfg文件说明
- EOS 一周回顾(12.2-12.8)
- 热搜第一除了本科生月均5千工资,还告诉了我们什么?
- 内存编址计算题--会一个题能做对一万个题
- 基因去重表达矩阵有重复的基因名 探针名字
- SaaS/大数据2019十大新闻出炉:我们不是“孤胆英雄”!
- wamp设置php目录,PHP配置环境更改wamp的www目录
- Esri携“新一代Web GIS”亮相中国地理信息产业大会
- 用java代码实现查询数据库
- think-cell高阶教程(1)——单一窗口管理所有数据链接的自动更新
- Flutter 3 发布了(文末推荐一个免费的在线Flutter学习教程)