参考答案和解析
正确答案: ⑴在运行的情况下使用最新版本的Hibernate发行版,如hibernate3中经过优 化的批量处理机制,代理机制、属性的延迟加载支持等;
⑵指定合理的缓存策略,通过系统压力测试得到最佳的缓存性能;
⑶采用合理的Session管理机制,避免无谓的数据库开销和临时对象的反复创建;
⑷尽量使用延迟加载特性,以避免系统资源的无谓消耗;
⑸设定合理的批处理参数(batch_size);
⑹如果可能,使用UUID作为主键生成器;
⑺如果可能,使用基于Version的乐观锁策略替代悲观锁;
⑻开发过程中,打开Hibernate的SQL日志文件(hibernate.show_sql),通过观 察Hibernate生成的SQL语句进一步了解其实现原理,从而指定更好的实现策略;
⑼数据库本身的优化也起着至关重要的作用,合理的索引、缓存和数据分区策略 都会对持久层性能带来客观提升。
更多“简述Hibernate的性能优化?”相关问题
  • 第1题:

    简述Hibernate的支持的事务类型。


    正确答案:HIbernate中支持JDBC的事务类型和JTA事务类型。JDBC事务类型是HIbernate封装了的原始的JDBC事务,JTA事务类型是由容器来控制的事务类型。

  • 第2题:

    在Hibernate中,从性能方面考虑,inverse属性值通常设置为()。

    • A、all
    • B、false
    • C、true
    • D、none

    正确答案:B

  • 第3题:

    请简述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语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。

  • 第4题:

    请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?


    正确答案: (1)选择最有效率的表名顺序
    (2)WHERE子句中的连接顺序
    (3)SELECT子句中避免使用‘*’
    (4)用Where子句替换HAVING子句
    (5)通过内部函数提高SQL效率
    (6)避免在索引列上使用计算。
    (7)提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。

  • 第5题:

    通过编译器对程序优化来改进Cache性能的方法有哪几种?简述其基本思想。


    正确答案: (1)数组合并,通过提高空间局部性来减少失效次数。有些程序同时用相同的索引来访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这些相互独立的数组合并成一个复合数组,使得一个Cache块中能包含全部所需元素。
    (2)内外循环交换。循环嵌套时,程序没有按数据在存储器中的循序访问。只要简单地交换内外循环,就能使程序按数据在存储器中的存储循序进行访问。
    (3)循环融合。有些程序含有几部分独立的程序断,它们用相同的循环访问同样的数组,对相同的数据作不同的运算。通过将它们融合成一个单一循环,能使读入Cache的数据被替换出去之前得到反复的使用。
    (4)分块。通过改进时间局部性来减少失效。分块不是对数组的整行或整列进行访问,而是对子矩阵或块进行操作。

  • 第6题:

    请简述Hibernate中的查询方式以及它们分别在什么样的场合下使用。


    正确答案:HQL:适用于较多的静态检索时。
    QBC://适用于动态条件检索时。
    原生SQL:适用于通过SQL才可以进行检索的特殊数据库时。

  • 第7题:

    简述Hibernate中find和iterate的区别?


    正确答案: find方法和iterator方法的区别
    (1) iterator首先会获取符合条件的记录的id,再跟据id在本地缓存中查找数据,查找不到的再在数据库中查找,结果再存在缓存中。N+1条SQL语句。
    (2) find根据生成的SQL语句,直接访问数据库,查到的数据存在缓存中,一条SQL语句。

  • 第8题:

    问答题
    请简述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语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。
    解析: 暂无解析

  • 第9题:

    问答题
    简述Hibernate的支持的事务类型。

    正确答案: HIbernate中支持JDBC的事务类型和JTA事务类型。JDBC事务类型是HIbernate封装了的原始的JDBC事务,JTA事务类型是由容器来控制的事务类型。
    解析: 暂无解析

  • 第10题:

    问答题
    简述hibernate.cfg.xml文件的作用

    正确答案: 该配置文件主要用来描述数据库连接的相关信息,以及该应用中关心映射文件所在的位置,和一些其他的设置,该文件一般放在项目的根目录下。
    解析: 暂无解析

  • 第11题:

    问答题
    通过编译器对程序优化来改进Cache性能的方法有哪几种?简述其基本思想。

    正确答案: (1)数组合并,通过提高空间局部性来减少失效次数。有些程序同时用相同的索引来访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这些相互独立的数组合并成一个复合数组,使得一个Cache块中能包含全部所需元素。
    (2)内外循环交换。循环嵌套时,程序没有按数据在存储器中的循序访问。只要简单地交换内外循环,就能使程序按数据在存储器中的存储循序进行访问。
    (3)循环融合。有些程序含有几部分独立的程序断,它们用相同的循环访问同样的数组,对相同的数据作不同的运算。通过将它们融合成一个单一循环,能使读入Cache的数据被替换出去之前得到反复的使用。
    (4)分块。通过改进时间局部性来减少失效。分块不是对数组的整行或整列进行访问,而是对子矩阵或块进行操作。
    解析: 暂无解析

  • 第12题:

    问答题
    如何优化Hibernate查询性能?

    正确答案: 1.优化SQL语句:HQL语句的书写方法、查询时所使用的查询方法、对象关联时所使用的抓取策略。
    2.使用正确的查询方法:执行数据查询功能的基本方法有两种:
    一种是得到单个持久化对象的get()方法和load()方法。
    另一种是Query对象的list()方法和iterate()方法。 在开发中应该依据不同的情况选用正确的方法。
    3.抓取优化(fetch):抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL或条件查询中声明。
    4.使用二级缓存:Hibernate只启用一级缓存,通过正确地使用二级缓存,往往可以获得意想不到的性能。
    解析: 暂无解析

  • 第13题:

    PGO优化属于()

    • A、由编译器自动完成优化
    • B、工具辅助的优化
    • C、使用高性能库
    • D、人工优化

    正确答案:B

  • 第14题:

    下面关于Hibernate的说法,错误的是()

    • A、Hibernate是一个“对象-关系映射”的实现
    • B、Hibernate是一种数据持久化技术
    • C、Hibernate是JDBC的替代技术
    • D、使用Hibernate可以简化持久化层的编码

    正确答案:C

  • 第15题:

    简述Hibernate与jdbc的联系


    正确答案: hibernate是jdbc的轻量级封装,包括jdbc的与数据库的连接(用hibernate.property的配置文件实现当然本质是封装了jdbc的forname),和查询,删除等代码,都用面向对象的思想用代码联系起来,hibernate通过hbm 配置文件把po类的字段和数据库的字段关联起来比如数据库的id,在po类中就是pravite Long id; public Long getId() ;public setId(Long id); 然后hql语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实现的魔法就是xml文件,其实hibernate=封装的jdbc+xml文件

  • 第16题:

    华为公司信令网优化包括负荷优化、数据优化、组网优化、性能优化和资源优化五个部分,如果“某移动运营商XXSTP将GT翻译DPC指向错误,造成消息循环,链路负荷达到0.9Erl”,可以使用哪个优化项目进行改进。()

    • A、负荷优化
    • B、数据优化
    • C、组网优化
    • D、性能优化
    • E、资源优化

    正确答案:B

  • 第17题:

    Spring包装Hibernate之后的Hibernate的DAO应该继承哪个类()。

    • A、Hibernate DAO
    • B、Session Factory
    • C、Hibernate DAO Suport
    • D、Session

    正确答案:C

  • 第18题:

    Hibernate中用于开始使用Hibernate的入口配置类是什么?


    正确答案:入口类是Configuration,该类用来读取HIbernate的配置文件并实例化SessionFactory对象等。该类的实例化代码如下。
    使用属性文件配置HIbernate时:Configurationconfig=newConfiguration();
    使用配置文件配置HIbernate时:Configurationconfig=newConfiguration().configrue();

  • 第19题:

    在Hibernate框架中,在执行可编程配置方式时,可以使用()的实例,将整个应用的Java类型映射为SQL数据库的完整集合。

    • A、org.hibernate.SessionFactory
    • B、org.hibernate.cfg.Configuration
    • C、org.hibernate.HibernateUtil
    • D、org.hibernate.Util

    正确答案:B

  • 第20题:

    问答题
    简述Hibernate的性能优化?

    正确答案: ⑴在运行的情况下使用最新版本的Hibernate发行版,如hibernate3中经过优 化的批量处理机制,代理机制、属性的延迟加载支持等;
    ⑵指定合理的缓存策略,通过系统压力测试得到最佳的缓存性能;
    ⑶采用合理的Session管理机制,避免无谓的数据库开销和临时对象的反复创建;
    ⑷尽量使用延迟加载特性,以避免系统资源的无谓消耗;
    ⑸设定合理的批处理参数(batch_size);
    ⑹如果可能,使用UUID作为主键生成器;
    ⑺如果可能,使用基于Version的乐观锁策略替代悲观锁;
    ⑻开发过程中,打开Hibernate的SQL日志文件(hibernate.show_sql),通过观 察Hibernate生成的SQL语句进一步了解其实现原理,从而指定更好的实现策略;
    ⑼数据库本身的优化也起着至关重要的作用,合理的索引、缓存和数据分区策略 都会对持久层性能带来客观提升。
    解析: 暂无解析

  • 第21题:

    问答题
    请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?

    正确答案: (1)选择最有效率的表名顺序
    (2)WHERE子句中的连接顺序
    (3)SELECT子句中避免使用‘*’
    (4)用Where子句替换HAVING子句
    (5)通过内部函数提高SQL效率
    (6)避免在索引列上使用计算。
    (7)提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。
    解析: 暂无解析

  • 第22题:

    问答题
    请简述Hibernate中的查询方式以及它们分别在什么样的场合下使用。

    正确答案: HQL:适用于较多的静态检索时。
    QBC://适用于动态条件检索时。
    原生SQL:适用于通过SQL才可以进行检索的特殊数据库时。
    解析: 暂无解析

  • 第23题:

    问答题
    简述Hibernate的优点和缺点?

    正确答案: (1)Hibernate的优点:
    1).Hibernate使用Java反射机制,而不是字节码增强程序来实现透明性; 
    2).Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色;
    3).它支持多种关系数据库,从一对一到多对多的各种复杂关系;
    (2)Hibernate的缺点:
    它限制您所使用的对象模型,如一个持久性类不能映射到多个表,其独有的 界面和可怜的市场份额也让人不安。
    解析: 暂无解析