更多“问答题请谈谈对Hibernate的理解,并简要叙述Hibernate的一级缓存和二级缓存。”相关问题
  • 第1题:

    说下Hibernate的缓存机制?


    正确答案: 缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。  
    缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。 
    Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。SessionFactory的内置缓存和Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session的一些集合属性包含的数据。SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的拷贝,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来,SessionFactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义SQL语句,因此SessionFactory不需要进行内置缓存与映射文件的同步。SessionFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。SessionFactory的外置缓存也被称为Hibernate的第二级缓存。

  • 第2题:

    什么是Hibernate一级缓存()

    • A、Hibernate一级缓存是Session的缓存
    • B、Hibernate一级缓存是SessionFactory的缓存
    • C、第一级缓存为必需,不允许且事实上也无法被卸除
    • D、第一级缓存可以设置

    正确答案:A,C

  • 第3题:

    hibernate都支持哪些缓存策略?


    正确答案: Read-only:这种策略适用于那些频繁读取却不会更新的数据,这是目前为止最简单和最有效的缓存策略 * Read/write:这种策略适用于需要被更新的数据,比read-only更耗费资源,在非JTA环境下,每个事务需要在session.close和session.disconnect()被调用 
    * Nonstrict read/write: 这种策略不保障两个同时进行的事务会修改同一块数据,这种策略适用于那些经常读取但是极少更新的数据 
    * Transactional: 这种策略是完全事务化得缓存策略,可以用在JTA环境下

  • 第4题:

    在Hibernate中关于缓存中却的说法有()

    • A、Hibernae只有一级缓存
    • B、Hibernate有一级缓存也有二级缓存
    • C、一级缓存不是必须的
    • D、二级缓存可以使用Ehcache、Oscache等

    正确答案:B,D

  • 第5题:

    在Hibernate 中关于缓存正确的说法有()。

    • A、Hibernate只有一级缓存
    • B、Hibernate有一级缓存也有二级缓存
    • C、一级缓存不是必须的

    正确答案:B

  • 第6题:

    请谈谈对Hibernate的理解,并简要叙述Hibernate的一级缓存和二级缓存。


    正确答案:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
    一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个
    Session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据;
    二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory
    创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库;

  • 第7题:

    多选题
    关于Hibernate缓存说法错误的是()。
    A

    Hibernate缓存一般分为三类:一级缓存、二级缓存和查询缓存

    B

    Session的evict()方法用于从缓存中清除指定的持久化对象

    C

    Session的clear()方法用于刷新缓存

    D

    Session的flush()方法用于从缓存中清除所有持久化对象


    正确答案: B,C
    解析: 暂无解析

  • 第8题:

    多选题
    什么是Hibernate一级缓存()
    A

    Hibernate一级缓存是Session的缓存

    B

    Hibernate一级缓存是SessionFactory的缓存

    C

    第一级缓存为必需,不允许且事实上也无法被卸除

    D

    第一级缓存可以设置


    正确答案: A,B
    解析: 暂无解析

  • 第9题:

    问答题
    请简要的描述一下使用Hibernate二级高速缓存的经验

    正确答案: 1.Hibernate3的二级缓存和session级别的缓存一样都只对实体对象做缓存,不对属性级别的查询做缓存;二级缓存的生命周期和sessionFactory的生命周期是一样的,sessionFactory可以管理二级缓存;
    2.sessionFactory级别的缓存,需要手动配置;所有的session可以共享sessionFactory 级别的缓存;(一般把一些不经常变化的实体对象放到sessionFactory级别的缓存中,适合放不经常变化的实体对象。)
    3.Hiberante3二级缓存的配置和使用方法如下:
    必须把ehcache.jar包导入,然后到Hibernate3.2的etc文件下把ehcache.xml复制到工程src目录下(ehcache.xml里边的参数里边有详细英文说明);
    说明:ehcache.jar是第三方法的缓存产品,hiberante只是把它做了集成,还有好多第三方hibernate集成的缓存产品,相关说明请查阅hiberante3开发手册;ehcache是不支持分布应用的,如果有分布式需求,请换成支持分布式的二级缓存产品,hiberate3开发手册都有相头说明。配置方法都类似);
    4.Hibernate3的二级缓存默认是开起的,也可以指定开起。
    解析: 暂无解析

  • 第10题:

    单选题
    在Hibernate 中关于缓存正确的说法有()。
    A

    Hibernate只有一级缓存

    B

    Hibernate有一级缓存也有二级缓存

    C

    一级缓存不是必须的


    正确答案: C
    解析: 暂无解析

  • 第11题:

    单选题
    下面关于hibernate核心接口说明错误的是()
    A

    Configuration 接口:配置Hibernate,根据其启动hibernate,创建SessionFactory对象;

    B

    SessionFactory 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;

    C

    Query和Criteria接口:执行数据库的查询;

    D

    Transaction接口:管理事务。


    正确答案: B
    解析: 暂无解析

  • 第12题:

    问答题
    说下Hibernate的缓存机制?

    正确答案: 缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。  
    缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。 
    Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。SessionFactory的内置缓存和Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session的一些集合属性包含的数据。SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的拷贝,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来,SessionFactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义SQL语句,因此SessionFactory不需要进行内置缓存与映射文件的同步。SessionFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。SessionFactory的外置缓存也被称为Hibernate的第二级缓存。
    解析: 暂无解析

  • 第13题:

    关于Hibernate缓存说法错误的是()。

    • A、Hibernate缓存一般分为三类:一级缓存、二级缓存和查询缓存
    • B、Session的evict()方法用于从缓存中清除指定的持久化对象
    • C、Session的clear()方法用于刷新缓存
    • D、Session的flush()方法用于从缓存中清除所有持久化对象

    正确答案:C,D

  • 第14题:

    请简要的描述一下使用Hibernate二级高速缓存的经验


    正确答案: 1.Hibernate3的二级缓存和session级别的缓存一样都只对实体对象做缓存,不对属性级别的查询做缓存;二级缓存的生命周期和sessionFactory的生命周期是一样的,sessionFactory可以管理二级缓存;
    2.sessionFactory级别的缓存,需要手动配置;所有的session可以共享sessionFactory 级别的缓存;(一般把一些不经常变化的实体对象放到sessionFactory级别的缓存中,适合放不经常变化的实体对象。)
    3.Hiberante3二级缓存的配置和使用方法如下:
    必须把ehcache.jar包导入,然后到Hibernate3.2的etc文件下把ehcache.xml复制到工程src目录下(ehcache.xml里边的参数里边有详细英文说明);
    说明:ehcache.jar是第三方法的缓存产品,hiberante只是把它做了集成,还有好多第三方hibernate集成的缓存产品,相关说明请查阅hiberante3开发手册;ehcache是不支持分布应用的,如果有分布式需求,请换成支持分布式的二级缓存产品,hiberate3开发手册都有相头说明。配置方法都类似);
    4.Hibernate3的二级缓存默认是开起的,也可以指定开起。

  • 第15题:

    不适合放入Hibernate二级缓存的有()

    • A、常被修改的数据
    • B、绝不容许出现并发的数据,例如财务数据
    • C、与其他应用共享的数据
    • D、常用数据

    正确答案:A,B,C

  • 第16题:

    在Hibernate 中关于缓存正确的说法有()    

    • A、Hibernate只有一级缓存
    • B、Hibernate有一级缓存也有二级缓存
    • C、一级缓存不是必须的
    • D、二级缓存可以使用Ehcache、Oscache等

    正确答案:B,D

  • 第17题:

    Hibernate中的一级缓存在什么情况下提交?


    正确答案:HIbernate中的一级缓存是事务级别的,当事务被提交后,缓存被清空。

  • 第18题:

    问答题
    Hibernate中的一级缓存在什么情况下提交?

    正确答案: HIbernate中的一级缓存是事务级别的,当事务被提交后,缓存被清空。
    解析: 暂无解析

  • 第19题:

    单选题
    Hibernate的二级缓存是由()维护的。
    A

    SessionFactory实例

    B

    Session实例

    C

    Query接口实例

    D

    Configuration实例


    正确答案: B
    解析: 暂无解析

  • 第20题:

    多选题
    在Hibernate 中关于缓存正确的说法有()
    A

    Hibernate只有一级缓存

    B

    Hibernate有一级缓存也有二级缓存

    C

    一级缓存不是必须的

    D

    二级缓存可以使用Ehcache、Oscache等


    正确答案: C,A
    解析: 暂无解析

  • 第21题:

    问答题
    请简述MyBatis和Hibernate的区别。

    正确答案: 调优方案:
    Hibernate的调优方案:
    1.制定合理的缓存策略;
    2.尽量使用延迟加载特性;
    3.采用合理的Session管理机制;
    4.使用批量抓取,设定合理的批处理参数(batch_size);
    5.进行合理的O/R映射设计
    Mybatis调优方案:
    MyBatis在Session方面和Hibernate的Session生命周期是一致的,同样需要合理的Session管理机制。MyBatis同样具有二级缓存机制。MyBatis可以进行详细的SQL优化设计。
    1、SQL优化方面
    Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。而Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。HibernateSQL语句的调优需要将SQL打印出来,而Hibernate的SQL被很多人嫌弃因为太丑了。MyBatis的SQL是自己手动写的所以调整方便。但Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录
    2、扩展性方面
    Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的SQL语句与具体使用的数据库无关,移植性很好。MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。
    解析: 暂无解析

  • 第22题:

    多选题
    不适合放入Hibernate二级缓存的有()
    A

    常被修改的数据

    B

    绝不容许出现并发的数据,例如财务数据

    C

    与其他应用共享的数据

    D

    常用数据


    正确答案: B,C
    解析: 暂无解析

  • 第23题:

    问答题
    hibernate都支持哪些缓存策略?

    正确答案: Read-only:这种策略适用于那些频繁读取却不会更新的数据,这是目前为止最简单和最有效的缓存策略 * Read/write:这种策略适用于需要被更新的数据,比read-only更耗费资源,在非JTA环境下,每个事务需要在session.close和session.disconnect()被调用 
    * Nonstrict read/write: 这种策略不保障两个同时进行的事务会修改同一块数据,这种策略适用于那些经常读取但是极少更新的数据 
    * Transactional: 这种策略是完全事务化得缓存策略,可以用在JTA环境下
    解析: 暂无解析