Configuration

Configuration 类负责管理 Hibernate 的配置信息。包括如下内容:

Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。

持久化类与数据表的映射关系(*.hbm.xml 文件)

创建 Configuration 的两种方式

1xml文件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的运行过程相关推荐

  1. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  2. .net System.Web.Caching.Cache缓存类使用详解(转载)

    转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...

  3. ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解

    一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...

  4. Java记录 -22- Java的基类Object详解

    Java的基类Object详解 Java的JDK文档要经常查阅使用,最好查看英文的文档. Oracle官方在线 Java API Specifications http://www.oracle.co ...

  5. C#中NameValueCollection类用法详解

    C#中NameValueCollection类用法详解,1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCol ...

  6. pythonsvc_sklearn-SVC实现与类参数详解

    sklearn-SVC实现与类参数 它是基于libsvm实现的.随着样本数量的增加,拟合时间的复杂度要高于二次,这就使得当样板数量超过一万个时,很难扩展到数据集中. 在多类处理时,是按照1对1的方案进 ...

  7. laravel 如何 new php 类,PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解...

    <PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解>要点: 本文介绍了PHP实例:laravel通过创建自定义artisan make命令来新建类文件详 ...

  8. (117)System Verilog类继承详解

    (117)System Verilog类继承详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类继承详解 5)结语 1.2 FPGA ...

  9. (116)System Verilog类合成(类包含关系)详解

    (116)System Verilog类合成(类包含关系)详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类合成(类包含关系)详解 ...

最新文章

  1. ASP.NET MVC Framework 系列
  2. Ubuntu系统常用命令
  3. VMware vsphere 中创建虚拟机的方法
  4. 世界各地区5G信道一览表[转载,仅作保存使用]
  5. C# 操作word之在表格中插入新行、删除指定行
  6. 权重衰减(weight decay)
  7. 所有家中常见物品的英文单词
  8. 荣事达Royalstar无叶暖风机——功能逻辑与能耗分析
  9. Mac 通过openCV打开摄像头权限
  10. YOLO的cfg文件说明
  11. EOS 一周回顾(12.2-12.8)
  12. 热搜第一除了本科生月均5千工资,还告诉了我们什么?
  13. 内存编址计算题--会一个题能做对一万个题
  14. 基因去重表达矩阵有重复的基因名 探针名字
  15. SaaS/大数据2019十大新闻出炉:我们不是“孤胆英雄”!
  16. wamp设置php目录,PHP配置环境更改wamp的www目录
  17. Esri携“新一代Web GIS”亮相中国地理信息产业大会
  18. 用java代码实现查询数据库
  19. think-cell高阶教程(1)——单一窗口管理所有数据链接的自动更新
  20. Flutter 3 发布了(文末推荐一个免费的在线Flutter学习教程)

热门文章

  1. centos7安装python-pip
  2. CSS3动画之百度钱包
  3. CryptoAPI 学习
  4. ETL工具 kettle问题
  5. C#.net技术内幕04-集合
  6. mac 下配置连接Linux服务器方法,上传下载文件操作
  7. 你真的会使用XMLHttpRequest吗?
  8. JavaSE学习总结第08天_面向对象3
  9. Dephi7程序设计与开发技术大全(求是科技)
  10. golang的mahonia字符集转换工具用法