hibernate面试点
2021-07-04 21:07
标签:检查 数据 映射 缓存 增删改查 hibernate close java 关系 1.谈谈你对hibernate的认识和理解 01.全自动的ORM框架 02.子项目 03.面向对象的思想来解决操作数据库 01.hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得程序员可以按照面向对象的思想来操控数据库中的数据 02.hibernate的核心接口有Configuration、SessionFactory、Session、Transaction、Query、首先由Configuration获取配置信息并做一切初始化的工作,接着通过SessionFactory创建SessionFactory,再通过SessionFactory创建Session,然后程序就可以使用Session完成增删改查操作,如果需要使用复杂一点的查询功能,则可以通过Session获取Query 03.hibernate的实体存在着,瞬时状态,持久状态,托管状态,(用new创建的实体对象属于瞬时状态,一般通过save()方法,saveOrUpdate()等方法转换成持久状态,而托管状态则通过close(),evicrt()等方法转换而成。) 04.hibernate的优缺点有: 001.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码 002.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 003.Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。 004.Hibernate的性能好,映射灵活性比较出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2.主键生成策略 和 hbm2ddl 3.get 和 load 的区别 01.立即加载和延迟加载 02.1和2级缓存中查询 03.如果数据库中没有数据 04.load也可以立即加载 4.evict() 和clear() 5.hibernate的缓存机制 1级缓存 session 2级缓存 sessionFactory -----> 查询缓存 6.hibernate三种状态,以及之间的转换 我们创建的对象,从数据库中获取的对象! 这些对象,在hibernate中的状态! 01.瞬时状态,没有 oid Student stu = new Student(); 02.持久状态 Student stu = (Student)session.get(Student.class,1); 03.游离状态 有oid session.clear(); session.evict(); 7.commit() 和 flush()的区别 commit() 是提交事务 永久 flush() 是清理缓存! 暂时 但是两者都能把数据同步到数据库! 01.commit执行之前,先执行flush 02.flush执行缓存清理 03.缓存清理,先 执行脏检查 04.什么脏检查和脏对象! 一个对象在被session管理的时候,会有一个快照保存在session中! 如果后续我们对这个对象的属性进行修改,那么在脏检查的时候,会拿我们这个修改 之后的对象和快照进行比对!我们这个对象发生了变化!那么这个对象就是脏对象! 这个脏对象会被保存到数据库中! 8.save() saveorupdate() update() merge()的区别 01.三种状态 02.状态之间的转换 03.merge不会改变对象的状态 9.openSession getCurrentSession 和 threadLocal hibernate面试点 标签:检查 数据 映射 缓存 增删改查 hibernate close java 关系 原文地址:http://www.cnblogs.com/xtdxs/p/7109599.html