Hibernate基础知识
一、Hibernate简介
Hibernate是一个开放源代码的ORM(Object Relation Mapping,对象关系映射)框架,它对JDBC进行了轻量级的对象封装。它是处于持久层的。
二、为什么使用Hibernate
所谓的ORM就是利用描述对象和数据库表之间映射的元数据,自动把Java应用程序中的对象,持久化到关系型数据库的表中。通过操作Java对象,就可以完成对数据库表的操作。可以吧ORM理解为关系型数据和对象的一个纽带,开发人员只需要关注纽带一端映射的对象即可。
三、Hibernate的执行流程
在Hibernate开发过程中通常会用到5个核心接口,分别为Configuration接口、SessionFactory接口、Session接口、Transaction接口和Query接口。Hibernate持久化操作的主要步骤具体如下:
(1)初始化Hibernate,构建Configuration实例,这一步用来读取Hibernate核心配置文件和映射文件信息到Configuration对象中。
(2)创建SessionFactory实例。通过Configuration对象读取到的配置文件信息并创建SessionFactory,并将Configuration对象中的所有配置文件信息存入SessionFactory内存中。
(3)创建Session实例,建立数据库链接。Session是通过SessionFactory打开的,创建一个Session对象就相当于建立了一个新的数据库链接。
(4)创建Transaction实例,开启一个事务。Transaction用于事务管理,一个Transction对象对应的事务可以包含多个操作。在使用Hibernate进行增删改操作的时候,必须先创建Transaction对象。
(5)利用Session接口通过的各种发发进行持久化操作。
(6) 提交事务。对实体对象持久化操作后,必须提交事务。
(7)关闭Session,断开与数据库的连接。
Hibernate的事务默认是不开启的,如果执行增删改操作,需要手动开启事务来控制,如果只做查询操作,可以不开启事务。
四、Hibernate的核心文件
1、 Hibernate的映射文件*.hbm.xml详解
从以上的代码中我们可以学习到几个标签及他们的含义
<hibernate-mapping>:定义XML配置文件的基本属性。它所定义的属性在映射文件的所有节点都有效。
<class:钙元素用来声明一个持久化类,它是XML配置文件中的主要配置内容。通过它可以定义Java持久化类与数据库表之间的关系。
<id>:持久化类的标识属性在Hibernate的映射文件中使用<id>元素来描述。该属性用来设定持久化类的OID和表的主键映射。
<property>:在映射文件中,通常使用property元素的name、column和type三个属性将持久化类中的普通属性映射到数据库表的对应字段上。
<class>
2、 Hibernate的配置文件hibernate.cfg.xml详解
Hibernate的配置文件包含了连接持久层与映射文件所需的基本信息,其配置文件有两种格式,具体如下:
●一种是properties属性文件格式的配置文件,它使用键值对的形式存放信息,默认文件名称我hibernate.properties。
●另一种是XML格式的配置文件,XML配置文件的默认名称为hibernate.cfg.xml。它通常放在WEB-INF/class路径下。
五、hibernate核心的API
它又6个长用的接口,分别是Configuration,SessionFactory,Session,Transaction,Query,Criteria。下面将对这6个核心接口进项详解。
1、Congfiguration:Configuration实例主要用于启动、加载、管理hibernate的配置文件信息。
2、SessionFactory:负责HIbernate的初始化和建立Session对象。它在Hibernate中起到一个缓冲区的作用,Hibernate可以将自动生成的SQL语句、映射数据库以及某些可重复利用的数据放在这个缓冲区中。同时它还保存了对数据库配置的所有映射关系,维护了当前的二级缓存。SessionFactory具有以下特点:①线程安全②重量级
3、Session:应用程序与数据库之间交互操作的一个单线程对象,是Hibernate运作中心。它的主要作用是为持久化对象提供创建、读取和删除等功能,所有持久化对象必须在Session的管理下才可以进行持久化操作。获取session有两种方式一种是opensesion()方法,另一种是通过getCurrentSession()方法(它会被绑定到当前线程中,它在提交或回滚操作时会自动关闭)。
session是线程不安全的。
4、Transaction:主要用于管理事务。它是Hibernate的数据库事务接口,且对底层的事务接口进行了封装。Transaction接口的事务对象是通过Session对象开启的,其开启方式如下:
Transaction transaction=session.beginTransaction();
5、Query:代表面向对象的一个Hibernate查询操作。
6、Criteria:是一个完全面向对象、可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现,以及SQL语句如何编写,它是Hibernate框架的核心查询对象。
总结:
详细介绍了hibernate的API以及核心文件。通过本篇博客您是否了解了Hibernate的基础知识呢?希望本篇博客对您来说有一定的帮助~感谢您的阅读。如有不妥之处欢迎斧正~