您的位置:首页 > 其它

SSH学习之Hibernate的核心接口

2017-03-15 18:01 218 查看

回忆

在之前一篇博客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正在修改的数据,即事务都是相互独立的。
持久性:事务所进行的的操作对数据库的改变是永久的。比如要增加一个用户,关闭数据库后,用户数据依然存放在磁盘或硬盘中。

多余的话

说真的,最近有点慌,看着身边的人要么考研,要么找工作,一个个都那么有干劲的,弄得我都有点措手不及。
这是我的一点点理解,请多多见谅。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: