• hibernate面试题


    1.hibernate优点

    ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

    ②.Hibernate 是一个基于JDBC的主流持久化框架,是一个优秀的ORM 实现。他很大程度的简化DAO层的编码工作

    ③.hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

    2.hibernate的缓存机制

    Session提供了一级缓存的功能,默认总是有效的。Session并不会立即把这种改变提交到数据库,除非显示调用了Session的flush()方法或通过close()方法关闭Session。

    SessionFactory级别的二级缓存是全局性的,所有的Session可以共享这个二级缓存。不过二级缓存默认是关闭的。一级缓存和二级缓存都是对整个实体进行缓存,不会缓存普通属性。

    查询缓存是将HQL或SQL语句以及它们的查询结果作为键值对进行缓存,对于同样的查询可以直接从缓存中获取数据。查询缓存默认也是关闭的,需要显示开启。

    3.hibernate查询数据方式

    HQL、原生sql、条件查询QBC

    4.hibernate如何处理并发问题

    1)设置事务隔离级别。
    Serializable:串行化。隔离级别最高
    Repeatable Read:可重复读
    Read Committed:已提交数据读
    Read Uncommitted:未提交数据读。隔离级别最差
    2)设置锁:乐观锁和悲观锁。
    乐观锁:使用版本号或时间戳来检测更新丢失,在的映射中设置 optimistic-lock=”all”可以在没有版本或者时间戳属性映射的情况下实现 版本检查,此时Hibernate将比较一行记录的每个字段的状态 行级悲观锁:Hibernate总是使用数据库的锁定机制,从不在内存中锁定对象!只要为JDBC连接指定一下隔 离级别,然后让数据库去搞定一切就够了。类LockMode 定义了Hibernate所需的不同的锁定级别:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;

    5.Hibernate中GET和LOAD的区别

    在hibernate中如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法。

    session.get 方法, 查询立即执行 , 返回类对象。

    session.load 方法,默认采用延迟加载数据方式,不会立即查询,返回类子类对象其实是一个代理对象,这个代理对象只保存了实体对象的id值只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。

    6.Hibernate中持久化对象状态

    OID 指与数据表中主键对应 PO类中属性

    ①瞬时态:不存在持久化标识OID,尚未与Hibernate Session关联对象

    ②持久态:存在持久化标识OID,与当前session有关联
    ③游离态:存在持久化标识OID,但没有与当前session关联,

  • 相关阅读:
    20162304 2017-2018-1 《程序设计与数据结构》第十周学习总结
    20162304 2017-2018-1 《程序设计与数据结构》第九周学习总结
    20162304 2017-2018-1 《程序设计与数据结构》第八周学习总结
    20162302 2017-2018-1《程序设计与数据结构》课程总结
    20162302 实验五《数据结构综合应用》实验报告
    20162302 实验四《图的实现与应用》实验报告
    20162302 《程序设计与数据结构》第十一周学习总结
    20162302 《程序设计与数据结构》第十周学习总结
    20162302 实验三《查找与排序》实验报告
    20162302 《程序设计与数据结构》第九周学习总结
  • 原文地址:https://www.cnblogs.com/mcahkf/p/9228910.html
Copyright © 2020-2023  润新知