zoukankan      html  css  js  c++  java
  • Hibernate 知识点复习

    核心接口

      1  Configuration接口负责配置并启动Hibernate,创建SessionFactory对象 

      2  SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。

      3  Session接口负责执行被持久化对象的CRUD操作,Session对象是非线程安全的。Hibernate的session不同于JSP应用中的HttpSession,将HttpSession对象称为用户session。所谓轻量级是指它的创建和销毁不需要消耗太多的资源。

      4  Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码

      5  Query 进行复杂的查询,SQL,HQL.

      6  Criteria  面向对象的思路去查询。

    事物

       1 原子性    要么执行,要么全都不执行

       2 一致性    事物完成时,所有数据保持一致状态

       3 隔离性    并发的修改,必须与任何其他事物修改隔离
     
       4 持久性    完成后,影响是永久的。

    悲观锁 


         在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制。 如银行提款机

    乐观锁

      乐观锁大多数基于数据版本记录机制(version)实现,一般是在数据库表中加入一个version字段,读取数据

    时将版本号一同读出,之后更新数据时版本号加一,如果提交数据时版本号小于或等于数据表中的版本号,则认

    为数据是过期的,否则给予更新。


    一级缓存


           第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预。

         Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中
    所有持久化对象。

    二级缓存

          第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。

         删除、更新、增加数据的时候,同时更新缓存

         把获得的所有数据对象根据ID放入到第二级缓存中

         当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到
    ,再查询数据库,把结果按照ID放入到缓存。

     

    Web层延迟加载(大数据,提高性能)


           Spring框架为Hibernate延迟加载。Spring提供了OpenSessionInViewFilter和OpenSessionInViewInt

    erceptor。


    性能优化

    HQL 优化
           API


    数据库设计


          降低关联的复杂性
          尽量不使用联合主键
       


    hibernate优点:


        1、封装了jdbc,简化了很多重复性代码。

        2、简化了DAO层编码工作,使开发更对象化了。

        3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。

        4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框
    架。
     

    参考资料
    http://www.cnblogs.com/otomedaybreak/archive/2012/01/27/2330008.htmlhttp://skyuck.iteye.com/blog/486167

  • 相关阅读:
    关于 <customErrors> 标记的“mode”属性设置为“Off”的问题的解决方案
    ASP.NET MVC的帮助类HtmlHelper和UrlHelper
    js判断手机浏览器操作系统和微信浏览器的方法
    javascript倒计时代码及倒计时弹窗
    修改UISearchBar背景色
    dispatch_group_async
    Block 代替for循环
    GCD 延时操作
    GCD 倒计时
    创建UIButton
  • 原文地址:https://www.cnblogs.com/brucetie/p/3568596.html
Copyright © 2011-2022 走看看