zoukankan      html  css  js  c++  java
  • Hibernate 零散知识点

    1 get方法和load方法查询时的区别:

      如果在缓存中没有找到相应的对象,get会直接访问数据库并返回一个完全初始化的对象,过程中可能涉及多次数据库调用;而load会返回一个代理对象,只有在对象getId()之外的方法被调用时才会真正的去访问数据库,在某些情况下大幅度提高了性能

      如果数据库中没有数据,get返回null;load调用某个属性时发生异常(org.hibernate.ObjectNotFoundException)

      get不支持延迟加载;load支持延迟加载

     2 openSession和getCurrentSession的区别:

      openSession是new一个新的session并返回;getCurrentSession会先查看当前线程(ThreadLocal)中是否绑定了session,如果有直接返回,没有就先创建再返回

      getCurrentSession使用ThreadLocal实现线程session的隔离

      openSeession在事务提交时需要手动关闭session,getCurrentSession是自动关闭

     3 Hibernate的缓存有哪些?缓存的作用分为几类?

      Hibernate缓存分为一级缓存、二级缓存和查询缓存

      一级缓存又称session缓存,由于session对象的生命周期通常对应一个数据库事务,因此一级缓存是事务范围内的缓存;一级缓存是不可关闭的,在一级缓存中,持久化类的每个实例都有一个唯一的OID

      二级缓存是sessionFactory缓存,又分为内置缓存和外置缓存。内置缓存时Hibernate自带的,不可关闭,是只读缓存,用来存放元数据和预定义SQL语句;外置缓存是一个可配置的缓存插件,默认sessionFactory没有启用,外置缓存中存放数据库数据的复制。sessionFactory对象的生命周期和应用程序的整个进程相对应。二级缓存是可选的,可以在每个类或每个集合的粒度上配置二级缓存

      查询缓存,是Hibernate为查询结果提供的,依赖于二级缓存

     4 Hibernate缓存的作用分为几类?

       事务范围:每个事务都有自己的缓存,缓存内的数据不会被多个事务并发访问;例如一级缓存,session内的数据只能被当前事务访问,不可跨session

       进程范围:进程内的事务共享缓存,进程结束,缓存结束;例如二级缓存,可跨session访问

       集群范围:缓存被一个或多个机器上的多个进程共享;二级缓存也可以作为集群范围的缓存

     5 Hibernate的检索方式有哪些?

      HQL检索

      QBC检索

      本地SQL检索

    6 Hibernate的查询方式有哪些?

      SQL:本地SQL查询
      QBC:Query By Criteria(使用面向对象的方式查询)
        全表查询
        条件查询  
        分页查询
        查询排序
        集合查询
        投影查询
      HQL:Hibernate Query Language
        全表查询
        别名查询
        条件查询 
        具名查询 
        分页查询
        查询排序
        集合查询
        投影查询

     7 Hibernate中session的清理和清空的区别:

      清理缓存调用session.flush();清空缓存调用session.clear()

      session清理缓存是按照缓存中对象的状态的变化来同步更新数据库,但不清空缓存;清空是把session的缓存置空,但不同步更新数据库

     8 如何调用原生SQL?

      Hibernate4中官方推荐使用session.doWork(Interface)进行jdbc操作

     9 Hibernate中如何实现类之间的关系?

      类与类的关系主要体现在表与表之间的操作,他们都是对对象进行操作,程序中将所有的表和类映射在一起,通过one-to-one、one-to-many、many-to-one、many-to-many进行声明

     10 Hibernate中如何进行性能优化?

        对象的三种状态

        一级缓存和快照

        延迟加载策略

        抓取策略

        整合c3p0连接池

        二级缓存

  • 相关阅读:
    postgresql遇到的性能问题
    面试(三)
    Oracle的dmp文件的导入
    plsql的参数IN和OUT
    IT小说
    被关注应该也是一种强大-日经某文有感
    总结:安卓手机页面样式没问题,苹果手机样式错乱。
    前端开发人员要注意的css规范,css命名。
    水平,垂直居中的15种方法
    nuxt 的一些报错和插件推荐
  • 原文地址:https://www.cnblogs.com/roxy/p/7608416.html
Copyright © 2011-2022 走看看