Hibernate结构
Hibernate是一个开放源代码的对象关系映射框架,,对JDBC进行了非常轻量级的对象封装,所以任何可以使用JDBC的地方都可以用Hibernate来替代,实现了对象与关系数据库记录的映射关系,简化了开放人员访问数据库的流程,极大地提高了软件开发的效率。
Hibernate提供的接口
session
一个轻量级的非线程安全的对象,主要负责被持久化对象与数据的操作,可以使用SessionFactory来创建一个Session,当对数据库的所有操作都执行完,就关闭session,session在访问数据库时会建立与数据库的连接,这个连接只有在需要时才会被建立。
SessionFactory
负责初始化Hibernate,它可以被看作是数据源的代理,用来创建session对象,SessionFactory对象是线程安全的,可以同时被多个线程访问。一般而言,SessionFactory会在Hibernate启动时创建一次,因此,为了便于使用,SessionFactory应该用一个单例模式来实现,
Transaction
负责事物相关的操作,主要方法有commit()和rollback(),其中commit()方法用来负责事物的提交,rollback()方法负责事物的回滚,可以通过Session的beginTrancation()方法来创建。
Query
负责执行各项数据库操作,可以使用Hibernate查询语言或SQL语句两种方式查询,可以通过session.createQuery()方法创建Query()。此外,Hibernate还提供了另外一种查询方式QBC,使用方法是:
先使用session实例的createCriteria()方法创建Criteria对象,接着使用工具类Restrictions的方法Criteria对象设置查询条件,同时还可以用Older工具类设置排序方式,最后用Projections工具类的方法进行统计和分组,使用Criteria对象的list()方法进行查询并返回结果,需要注意的是,QBC是一种类型安全的面向对象的查询方式。
Configuration
用于读取Hibernate配置文件,并生成SessionFactory对象,其中配置文件有hibernate.cfg或hibernate.properties;另一类是映射文件.xml文件,为了方便管理,通常会给每个对象创建一个单独的映射文件。
Hibernate的工作流程
1.应用程序通过Configuration读取配置文件,并创建SessionFactory对象。
2.通过SessionFactory生成一个对象。
Session session=SessionFactory.openSession();
3.通过Session对象的beginTransaction()创建一个事物。
Transaction t=session.beginTransaction();接着可以通过Session对象的get()、load()、save()、update()、delete()和saveOrUpdate()等方法实现数据的加载、保存、更新、和删除等操作;也可以通过session生成一个Query对象然后利用Query对象执行查询操作;最后通过commit()方法或rollback()方法完成事物操作。
4.在完成所有持久化操作与事物操作后需要关闭Session与SessionFactory。