hibernate基本原理

hibernate是一个基于ORM的持久化框架。它是对jdbc的轻量级封装, [img]http://dl2.iteye.com/upload/attachment/0114/2909/c47e9de5-983c-3329-8903-1580b5022525.png[/img] 从图能够知道hibernate的六大核心接口,两个主要配置文件,以及他们的直接关系。 一、Configuration接口 : 负责配置并启动hibernate 二、SessionFactory接口 : 负责初始化hibernate 三、Session接口 : 负责持久化对象的CRUD操做 四、Transaction接口 : 负责事务 五、Query接口和Criteria接口 : 负责执行各类数据库查询 Configuration实例是一个启动期间的对象,一旦SessionFactory建立完成它就被丢弃。 Hibernate工做原理: 一、解析hibernate.cfg.xml配置文件 经过Configuration config = new Configuration().configure(); 读取并解析hiberante.cfg.xml配置文件 二、读取并解析映射信息 hibernate.cfg.xml中的<mapping resource="com/User.hbm.xml"/>映射文件 三、建立SessionFactory对象 SessionFactory sf = config.buildSessionFactory(); 四、打开Session Session session = sf.openSession(); 五、建立并启动事务 Transaction tx = session.beginTransaction(); 六、CRUD持久化操做 七、提交事务 tx.commit(); 八、关闭session 九、关闭SessionFactory hibernate优点: 一、对JDBC访问数据库的代码作了封装,大大简化了数据访问层繁琐的重复性代码。 二、Hibernate是一个基于JDBC的主流持久层框架,基于ORM实现。很大程度的简化DAO层编码工做。 三、hibernate使用java反射机制。 四、hibernate是轻量级框架,性能优秀,支持各类关系数据库,易于测试。 hibernate缓存机制 hibernate缓存的做用: hibernate是一个持久层框架,常常访问物理数据库,为了下降应用程序对物理数据源访问的频次,从而提升应用程序的运行性能。缓存内的数据对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 hibernate缓存分类: 分为一级缓存和二级缓存 一级缓存又称为“session的缓存”,它是内置的,即便用hibernate便使用了session缓存。因为session对象的生命周期一般对应一个数据库事务或者一个应用事务,所以它的缓存是[b]事务范围的缓存[/b]。在第一级缓存中,持久化类的每一个实例都具备惟一的OID。 二级缓存又称为“SessionFactory的缓存”,因为SessionFactory对象的生命周期和应用程序的整个过程对应,所以hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,所以须要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认状况下,sessionFactory不会启用这个插件。 第三方二级缓存实现: Hibernate除了自带的缓存机制外,还提供了第三方缓存机制实现的接口,如: 1. JCS 2. EHCache 3. OSCache 4. JBoss Cache 5. SwarmCache 什么样的数据适合存放到第二级缓存中?    1 不多被修改的数据    2 不是很重要的数据,容许出现偶尔并发的数据    3 不会被并发访问的数据    4 常量数据    不适合存放到第二级缓存的数据?    1常常被修改的数据    2 .绝对不容许出现并发访问的数据,如财务数据,绝对不容许出现并发    3 与其余应用共享的数据。 Hibernate查找对象如何应用缓存? 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,若是配置了二级缓存,那么从二级缓存中查;若是都查不到,再查询数据库,把结果按照ID放入到缓存 删除、更新、增长数据的时候,同时更新缓存