Hibernate核心接口

Hibernate核心接口

Hibernate有五大核心接口,分别是:Session、Transaction、 Query、 SessionFactory 、Configuration 。这五个接口构成了hibernate运行的基本要素,可以执行存取,持久化,事务管理等操作。这五个接口可以位于系统的业务逻辑层和持久化层。下面是一张Hibernate的关系图:

 

 

Configuration

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

  •   Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等
  •   Hibernate映射文件(*.hbm.xml)

 

Hibernate配置的两种方法:

  • Xml文件(hibernate.cfg.xml)(常用)

加载默认名称的配置文件(hibernate.cfg.xml)

代码:Configuration cfg = new Configuration().configure();

或加载指定名称的配置文件:

代码:Configuration cfg = new Configuration().configure(“myhibernate.cfg.xml”);

  • 属性文件(hibernate.properties)

Configuration cfg = new Configuration();

 

SessionFactory

  应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。

     会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。

代码: SessionFactory sessionFactory =  cfg.buildSessionFactory();

说明:SessionFactory由Configuration对象创建,每个Hibernate配置文件,实际上是对SessionFactory的配置

 

Session

Session不是线程安全的,它代表与数据库之间的一次操作;Session也称为持久化管理器,因为它是与持久化有关的操作接口;Session通过SessionFactory打开,在所有的工作完成后,需要关闭。它与Web层的HttpSession没有任何关系。

代码 :Session session = sessionFactory.openSession();

常用的方法:

  • 取得持久化对象的方法: get() load()
  • 持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()
  • 开启事务: beginTransaction().
  • 管理 Session 的方法:isOpen(), close()等

 

Transaction

用来指定原子操作单元范围的对象,他通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开来。

代码: Transaction tx = session.beginTransaction();

说明:使用Hibernate进行操作时必须显式的调Transaction(默认:autoCommit=false)。

常用方法:

  • commit():提交相关联的session实例
  • rollback():撤销事务操作

 

Query

  Query实例包装了HQL查询语句,hql是面向对象的,他引用类名及类的属性名,而不是表名和字段名。也可以使用SQL语句方式查询。

代码: Query query = session.createQuery(“from User”);

 

Hibernate运行过程

 

 

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

2. 并用这些信息生成一个SessionFactory对象,

3. 然后从SessionFactory对象生成一个Session对象,

4. 并用Session对象生成Transaction对象;

5. 可通过Session对象get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载、保存、更新、删除、等操作;如果没有异常,Transaction对象将提交这些操作到数据库中。如果是查询,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作。

转载于:https://www.cnblogs.com/zhouyeqin/p/7193942.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值