Hibernate体系结构学习笔记与心得
Hibernate体系结构
一核心接口:
(一)、Session接口
首先Hibernate的Session会话不是线程安全的,所以我们应该在每一个线充中去单独使用它们,也就是在每个应用中去创建和销毁Session会话。我们可以理解为:Session会话就是一个单独的工作单元已装载对象的缓存或集合。我们也称Session为持续性管理器,我们通过session完成持续性的有关操作例如存储和取出对象的接口。Session对象有一个一级缓存,现实执行Flush之前,所有的持久化操作的数据都在缓存中Session对象处。
(二)、SessionFactory(会话工厂)
应用从SessionFactory里获得会话实例,整个应用中只有唯一一个会话工厂。也就是我们导入Hibernate框架时生成的MySessionFactory文件中由sessionFactory = configuration.buildSessionFactory();创建的sessionFactory。会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。它也保存了在一个工作单元中读入的数据并且可能在以后的工作单元中被重用(只有类和集合映射指定了这种二级缓存是想要的时才会如此)。
(三)、Configuration接口
Configuration接口应用使用一个配置实例来指定映射文件的位置和Hibernate的特定属性,然后创建会话工厂。
(四)、Query接口和Criteria接口
Query接口允许我们在数据库上执行查询并控制查询如何执行。Criteria(标准)接口非常小,它允许你创建和执行面向对象的标准查询。
具体可参见http://blog.csdn.net/titilover/article/details/6920457
二、回调接口
当一个对象发生了应用感兴趣的事情——例如,当一个对象被装载、保存或删除时,回调接口允许应用可以接收到通知。
接口Lifecycle和Validatable允许持续对象对与其有关的生命周期事件做出反应。持续性生命周期由对象的CRUD操作构成。引入接口Interceptor是为了允许应用处理回调而又不用强制持续类实现Hibernate特定的API。接口Interceptor的实现被作为参数传递给持续类的实例。
三、类型
Hibernate的类型对象将一个java类型映射到数据库字段的类型,持续类所有的持续属性,包括关联,都对应了一个Hibernate类型。Hibernate的内建类型范围非常广泛,覆盖了所有的java类和jdk类型。同时我们也可以使用UserType和CompositeUserType这两个接口增加自己的类型。