Hibernate 工作原理详解

来源:互联网 发布:sql2000数据库恢复 编辑:程序博客网 时间:2024/06/06 20:18

可能前几篇没怎么说Hibernate是怎么工作的,概念可能没怎么说,现在就来学习一下它是怎么工作的~

1.hibernate.cfg.xml配置文件:

Hibernate框架根据hibernate.cfg.xml的配置的信息来和数据库进行通信

2.**.hbm.xml 映射文件:

Hibernate框架根据具体的映射文件**.hbm.xml来保存,更新,删除,查询对象。

3.Configuration接口:

Configuration对象用于配置并且根启动HibernateHibernate应用通过Configuration实例还指定对象-关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory

实例:

Configuration config = new Configuration();Config.configure();SessionFactory factory = config.buildSessionFactory();
4.SessionFactory:

用来构造Session的实例对象,它的特点:

  1)线程安全: 该实例对象何以被多个线程共享

  2)重量级:该实例对象的构造和销毁消耗系统资源,所以一般在应用程序启动的时候就构造实例对象,一般一个数据库对应一个SessionFactory的实例对象,如果要访问多个数据库,就需要创建多个该实例对象。

  3SessionFactory实例对象中维护了一个很大的缓存,存放了一些预定义的SQL语句和XML配置文件的信息,另外还维持了一个Hibernate的第二级缓存(缓存了所有Session对象所加载的POJO对象),用来保存在该生命周期中的一些业务对象,但是这个第二级缓存默认是关闭的,必须在xml中配置才可以开放

Session session = factory.openSession();
5.Session(持久化管理器)

用来对对象的保存,更新,删除和查询

特点:

  1)线程不安全,要避免同一个Session对象被多个线程共享,一般一个线程对应一个Session

  2)轻量级:可以随意的构造和销毁该实例对象。

  3Session对象中维护了一个缓存,称为Hibernate的第一级缓存(缓存了当前Session对象所加载的POJO对象)每个Session对象都有自己的缓存。

6.Query

用来查询单个或者多个对象,利用HQL语句(Hibernate Query Language)面向对象的

Query query = session.createQuery("from Student where studentId=1");Student s = (Student)query.uniqueResult();
7.Criteria

功能同上,以面向对象的形式和数据库进行复杂的CRUD操作,还适用于动态查询。

8.Transaction

用来处理事务的,事务的启动,提交,回滚


1 0