天天看点

SSH学习之Hibernate的核心接口回忆Hibernate的核心接口Configuration接口SessionFactory接口Session接口Transaction接口Query接口事务多余的话

回忆

在之前一篇博客Hibernate的简介中知道了Hibernate在WEB项目开发中的作用,就是对数据库的数据进行CRUD操作的封装框架。 说实话,如果只是想要使用Hibernate的话,是很容易掌握的,但是想要真正了解他的工作原理及工作机制,还是需要花费一定的精力的。所以,我只是想要介绍的也只是如何使用它而已,一些相当难以理解的概念(使用却很方便)就可能一掠而过,不做深入的讲解。

Hibernate的核心接口

Hibernate的核心接口一共有六个:Configuration、Transaction、SessionFactory、Session、Query、 Criteria。在我接触过的开发中最常用的就是红色部分的五个接口,尤其是在单独使用Hibernate的时候很常用。在SSH整合中最常用的是Session、Query、SessionFactory三个,Transaction已经被Spring给封装好。 Hibernate提供的这六个接口,可以让我们很轻松的对数据库进行操作。

Configuration接口

  • 这个接口的主要作用就是加载Hibernate的核心配置文件:hibernate.cfg.xml。
  • 负责配置并启动Hibernate,创建SessionFactory对象。
  • 当创建了SessionFactory对象之后,Configuration对象就会被回收销毁。
//加载配置文件
Configuration cfg = new Configuration();
//如果没有指定核心心配置文件,那么默认加载的是src目录下的hibernate.cfg.xml
//如果核心配置文件路径改变,一定要指出路径
cfg.configure("hibernate.cfg.xml");
           

SessionFactory接口

  • 负责初始化Hibernate,创建Session对象。
  • SessionFactory本身是线程安全的,多个线程同时调用都不会出现问题。
  • 一般情况下,一个项目的SessionFactory的个数是根据所使用的数据库数量来定的。
//生成SessionFactory
SessionFactory sf = cfg.buildSessionFactory();
           

Session接口

  • 负责对数据库执行CRUD操作。用户对数据库的操作就是由他来执行的。
  • 项目中Session是可以创建多个的,而且Session还是非线程安全的。
Session session = sf.openSession();
           

Transaction接口

  • 负责事务相关的操作,比如数据的提交和回滚。事务的说明在本文最后解说。
  • 使用Session的beginTransaction()方法生成。

Query接口

  • 负责执行各种数据库查询并返回相应的结果。
  • Query接口主要执行的语句是hql,一种和sql非常类似的查询语言。它操作的是实体类对象,sql操作的是数据库中的表。

事务

事务,可以这样理解,他就是一些结构化语言的集合,并作为一个执行单位去操作数据库。比如,A转账给B的增减操作就可以作 为一个事务来理解,A需要减少500元,那么B就必须增加500元。 事务的四大特性ACID:原子性、一致性、隔离性、持久性。

  • 原子性:将事务中所做的操作捆绑成一个原子单位,也就是说对于事务所进行的的数据库修改操作,要么全部执行,要么全部不执行。
  • 一致性:事务在完成时,必须所有的数据都保持一致状态。比如A减少500,B必须增加500。
  • 隔离性:事务A不会去查看事务B正在修改的数据,即事务都是相互独立的。
  • 持久性:事务所进行的的操作对数据库的改变是永久的。比如要增加一个用户,关闭数据库后,用户数据依然存放在磁盘或硬盘中。

多余的话

说真的,最近有点慌,看着身边的人要么考研,要么找工作,一个个都那么有干劲的,弄得我都有点措手不及。 这是我的一点点理解,请多多见谅。

继续阅读