1.3简要介绍Hibernate实现原理

来源:互联网 发布:nodejs数据库前端显示 编辑:程序博客网 时间:2024/05/19 13:42

先贴一张Hibernate官方用户手册的类关系图,上面标注了具体类名。由下图可以清楚看到,Hibernate实现了JPA规范。

(以下摘抄自文档中的部分翻译,英语水平有限,如有误,欢迎指正)

1、SessionFactory

一个线程安全,代表了实体类(domain)到数据库的映射,用于产生Session实例对象。创建一个SessionFactory的代价是非常昂贵的,所以对于任意给定的数据库,应用程序应只拥有一个与其相关联的SessionFactory。SessionFactory维护Hibernate在所有Session中使用的服务,比如二级缓存、连接池、事务系统集成等等。(负责初始化hibernate,创建session对象)

2Session

一个单线程,存活时间短的对象,在JPA中Session由EntityManager表示。Session包装了JDBC的java.sql.Connection连接。也充当了创建Transaction实例的工厂。它维护了实体类(domain)对象模型中一个基本的"可重复阅读"的持久化上下文(一级缓存)。(也就是负责持久化对象的CRUD操作)

3、Transaction

是应用程序使用的单线程、存活时间短的用来划分单独的物理事务边界的对象。在JPA中表示为EntityTransaction。
可参照该博主的文:http://blog.csdn.net/jiuqiyuliang/article/details/39078749


下面贴出测试类的代码进行详解

NATIVE:

   

关于ServiceRegistry的理解,可参考:http://www.oschina.net/question/12_84538

JPA: