Hibernate核心实现原理

五大核心接口

Session 数据库


Session接口 Session 接口对于Hibernate 开发人员来讲是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,建立和销毁它都不会占用不少资源。这在实际项目中确实很重要,由于在客户程序中,可能会不断地建立以及销毁Session对象,若是Session 的开销太大,会给系统带来不良影响。可是Session对象是非线程安全的,所以在你的设计中,最好是一个线程只建立一个Session对象。 session能够看做介于数据链接与事务管理一种中间接口。咱们能够将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。咱们有时也称Session是一个持久层管理器,由于它包含这一些持久层相关的操做, 诸如存储持久对象至数据库,以及从数据库从得到它们。须要注意的是,Hibernate的session不一样于JSP 应用中的HttpSession。当咱们使用session这个术语时,咱们指的Hibernate 中的session,而咱们之后会将HttpSesion 对象称为用户session

SessionFactory安全


SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责建立Session对象。这里用到了工厂模式。须要注意的是SessionFactory并非轻量级的,由于通常状况下,一个项目一般只须要一个SessionFactory就够,当须要操做多个数据库时,能够为每一个数据库指定一个SessionFactory

Transaction session


Transaction接口负责事务相关的操做,通常在Hibernate的增删改中出现,可是使用Hibernate的人通常使用Spring去管理事务

Queryspa


Query负责执行各类数据库查询。它可使用HQL语言或SQL语句两种表达方式。它的返回值通常是List。须要本身转换

Configuration
Configuration对象用于配置并根启动Hibernate。Hibernate应用经过Configuration实例来指定对象—关系映射文件的位置或者动态配置Hibernate的属性,而后建立SessionFactory实例

线程