您现在的位置是: 首页 >  个人博客日记 >  Hibernate基本方法、接口和类介绍 博客详情

Hibernate基本方法、接口和类介绍

请叫我菜鸟 2019-03-25 22:41 【Hibernate框架】 925次预览

简介1)Configuration类Configuration 类负责读取主配置文件的信息。包括如下内容:Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cf...

1)Configuration类

Configuration 类负责读取主配置文件的信息。包括如下内容:

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

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

加载Xml文件(hibernate.cfg.xml)创建对象方式

Configuration cfg = new Configuration().configure();


2)SessionFactory接口

Configuration对象根据当前的配置信息生成 SessionFactory 对象,因此SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存。

获取SessionFactory的方式:

Configuration cfg = new Configuration().configure();

SessionFactory sf = cfg.buildSessionFactory();

SessionFactory作用:是生成Session的工厂

Session session = sf.openSession();


Session接口

Session接口:是应用程序与数据库之间交互操作的核心对象,是 Hibernate 运作的中心,所有持久化对象(javabean)必须在 session 的管理下才可以进行持久化(更新数据库)操作。

获取Session对象的方式:

Session session  = sessionFactory.openSession();

Session的主要方法简介:

取得持久化对象的方法: get() load()

持久化对象保存,更新和删除:save(),update(),saveOrUpdate(),delete()

开启事务: beginTransaction().

管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等


4)Transaction接口

代表一次数据库访问的最小操作,具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。

获取Transaction对象的方式:

Transaction tx =session.beginTransaction();

常用方法:

commit():提交相关联的session实例

rollback():撤销事务操作

wasCommitted():检查事务是否提交


5)Query接口

Query接口 :封装数据库查询的返回结果(hql的查询方式)

获取Query对象的方式:

Query query = session.createQuery(“hql");

常用方法:

Iterator():获取查询结果的迭代器对象(只查询主键,返回)

list():以集合的方式获取查询结果


(5)执行原理与流程

a、应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,

b、并用这些信息生成一个SessionFactory对象,

c、然后从SessionFactory对象生成一个Session对象,

d、并用Session对象生成Transaction对象;

e、可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()、createQuery()等方法对进行CURD等操作;

f、提交事物。


hibernate框架的核心流程图:

483148267fa948bd9fbb9e8d2c439873.png


加入我们

  • Java学习资源网官方群1

    群号:280998807(已满)

  • Java学习资源网官方群2

    群号:291195645

  • Java学习资源网官方群3

    群号:691628026

打赏本站

  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!
  • 微信扫码:你说多少就多少~
  • 支付宝扫码:你说多少就多少~