hibernate是一个开源的持久化对象关系映射的框架,他对jdbc进行了轻量级的封装,而我们可以使

面向对象的思想来操纵数据库

hibernate的和新街口;

session;负责被持久化对象的crud操作;

sessionfactory;负责初始化hibernate,创建session对象

configuration;负责配置并启动hibernate,创建sessionfactory

transaction;负责事物的相关的操作

query和criteria接口;负责执行各种数据库查询

为什么使用hibernate?

1,对jdbc访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码

2,hibernate是一个优秀的主流orm框架,支持各种数据库,

3,hibernate使用java反射机制,而不是自己吗挣钱程序来实现透明性

 

hibernate是如何演示加载?get与load的区别

1,对于hibernate get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中

查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null

2,hibernate load方法加载实体对象的时候,根据映射文件上类级别的lazy属性配置(默认true)

分情况;

001,若为true则首先在session缓存中查找,查看该id对应的对象是否存在,不存在则使用演示加

载,返回实体的代理类对象,等到具体使用该对象的时候,在查询二级缓存和数据库,若仍没发现符

合条件的记录,则会抛出ObjectNotFountException

002,若为false,就跟hibernate的fet方法查找顺序一样,知识最终若没有发现符合条件的记录,则会抛出一个ObjectNotFoundException

get与load的区别

1,如果未发现符合条件的记录,hibernate的get方法返回null,而load方法会抛出

ObjectNotFoundException

2,load方法可返回没有加载实体数据的代理类实例,而get方法永远返回有时有实体数据的对象

3,get方法会立即执行,而load方法是在调用的时候才执行

hibernate缓存机制

缓存作用;

hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据库访问的次数,

从未提高应用程序的运行性能,从而引入了缓存,缓存内的数据是对物理数据源中的数据的复制,应

用程序咋运行时从缓存读写数据,在特定时刻或时间会同步缓存和物理数据源的数据

hibernate缓存分类

hibernate缓存包括两大类,hibernate一级缓存和hibernate二级缓存

hibernate一级缓存;又称为session缓存,它是内置的,意思是说,只要使用hibernate就必须使用

session缓存,他的缓存是事物范围的缓存,在一级缓存中,持久化测类的每个实例都具有唯一的

OID

hibernate二级缓存;又称为sessionfactory的缓存,由于sessionfactory对象的生命周期和应用程

序的整个过程对应,因此二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,二级缓存

是可选的,是一个可配置的插件,在默认情况下,sessionfactory不会启用这个插件

什么样的数据适合存放到二级缓存中?

1,很少被修改的数据

2,不是很重要的数据,允许出现偶尔并发的数据

3,不会被并发访问的数据

4,常量数据

不适合放到二级缓存中的数据?

1,经常被修改的数据

2,绝对不允许出现并发访问的数据,如财务数据,

3,与其他应用共享的数据

转载于:https://www.cnblogs.com/liuyunfei/p/7115560.html

为什么使用hibernate相关推荐

  1. java面试常见问题之Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象.) Ø  OID检索(按照对象的OID来检索对象.) Ø  HQL检索(使用面向对象的HQL查询语言.) ...

  2. Spring中启用Hibernate二级缓存步骤

    1.在applicationContext.xml配置文件中SessionFactory  bean中配置缓存 <!-- 配置会话工厂对象 --> <bean id="se ...

  3. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  4. Hibernate框架第二天

    ### Hibernate的持久化类 ### ---------- **什么是持久化类** 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为 ...

  5. Hibernate **关于hibernate4.3版本之后org.hibernate.service.ServiceRegistryBuilder被弃用**

    之前一直都是使用hibernate4.2.21的我,有一天突然没有使用本地的jar包而是让IDEA自动下载最新版本的hibernate5.2.2之后,发现有几个经常使用的方法报错了. //创建配置对象 ...

  6. 使用hibernate与mysql时数据不能插入的原因及解决办法

    1.背景 之前从没用过hibernate,因此在网上搜了一下hibernate快速入门方面的信息,最后我按照<Myeclipse Hibernate 快速入门 中文版>(CSDN,百度文库 ...

  7. IntelliJ IDEA下自动生成Hibernate映射文件以及实体类

    转自:https://blog.csdn.net/qq_34197553/article/details/77718925 1.构建项目并添加项目结构配置以及配置初始参数 1.1.如图将基本的架子搭建 ...

  8. Spring Hibernate JPA 联表查询 复杂查询

    (转自:http://www.cnblogs.com/jiangxiaoyaoblog/p/5635152.html) 今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的 ...

  9. 5 -- Hibernate的基本用法 --2 1 Hibernate 下载和安装

    1. 下载Hibernate压缩包 2. 解压:文件结构 ⊙ documentation : 该路径下存放了Hibernate的相关文档,包括Hibernate的参考文档和API文档等. ⊙ lib ...

  10. Hibernate的一级缓存

    Hibernate的一级缓存 什么是缓存:缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取 缓存的好处:提升程序运行的效率.缓存技术是Hibe ...

最新文章

  1. Tensorflow-gpu 在Anaconda中使用出现问题的解决方式
  2. java序列化与反序列化(转)
  3. sql中如何统计各种零件的总数量_如何应用GOF设计模式中的构建者模式创建复合对象实例...
  4. python聚类dbscan案例经纬度_用DBSCAN聚类经纬度坐标
  5. Android插件框架VirtualAPK
  6. 按插入顺序排序的map
  7. Go -- log4go日志
  8. M1芯片Mac使用原生brew安装软件速度过慢的解决办法
  9. init.d目录理解
  10. Java poi 列移动_如何在java xssf中移動列poi
  11. leetcode(二)—— Add Two Numbers(Python/C++)
  12. jdk和jre有什么区别?
  13. ezd格式文件怎么打开_支持EZD文本格式的软件,想要打开DXF文本格式,怎样把它改成EZD文本格式...
  14. iis服务器mp4不显示,IIS浏览器无法读取mp4视频的解决方法
  15. springboot 整合谷歌 gRPC
  16. ZF和MMSE准则线性预编码的比较
  17. Cent OS (一)Cents OS的基本安装
  18. 【ncnn】源码阅读理解(三)——blobs
  19. 网课查题微信公众号如何搭建步骤
  20. 获取所有股票历史行情数据

热门文章

  1. C语言工程代码查看神器 SourceInsight
  2. 用Java模拟网卡、声卡继承PIC接口,实现网卡、声卡能与主板连接
  3. n数码问题,全排列的hash(转载
  4. opencv求解AX=0
  5. dataframe筛选数据根据某一个列的数据在另外的一个数组中
  6. python写背单词软件_python背单词小程序
  7. linux-linux top 命令各参数详解
  8. Django框架(上传Excel文件并读取)
  9. java中byte转string的方法有哪些?
  10. CentOS 7系统关闭yum自动下载更新