博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中的Session
阅读量:4364 次
发布时间:2019-06-07

本文共 998 字,大约阅读时间需要 3 分钟。

   我们之前也经常使用Session,通过连接服务器将需要保存的值存到服务器的session中,这是之前关于session的简单应用。现在看到Hibernate框架中也有关于Session的定义,该定义是和之前的有所不同的,我们先来看看什么是Hibernate中的Session!

   

   Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与Session相关,Hibernate在对数据库进行操作之前,必须先取得Session实例。这其实跟我们在使用JDBC对数据库进行操作之前,必须先获取Connection实例是一样的。

   Session接口是Hibernate向应用程序提供的操作数据库的最主要的接口,它提供基本的保存、添加、删除和更新java对象的方法,Session具有一个缓存,位于缓存中的对象成为持久化对象,它和数据库中的相关表相对应。Hibernate中的Session作为Hibernate的一级缓存,session的缓存是一块内存空间,在这个内存空间存放了相互关联的Java对象。Session的缓存是内置的,不可被拆卸。

   Session作为Hibernate的一级缓存,提供了相应的方法,当我们在程序中需要持久化这些Java对象时,可以直接通过Session,来操作这些Java对象,当程序中需要调用Session的save()、update()、saveOrUpdate()、load()或者get()以及查询的query()方法的时候,如果在缓存中还不存在这些对象,我们就将这些Java对象添加的一级缓存中,当清理缓存时,Hibernate会根据缓存状态变化来同步更新数据库。下面来看一下Hibernate使用一级缓存的图解:

     

      上图是描述程序查询session缓存是否存在,当不存在查询数据库,之后放入session缓存中,当应用程序第二次调用时可以直接调用session缓存中数据,可以减少访问数据的频率。

      有放入Session缓存总数据的方法,就有清理的工具,Session为应用功能程序提供了两个管理缓存的方法:

      (1)、evict(Object o):从缓存中清除参数指定的持久化对象

      (2)、clear():清除缓存中所有的持久化对象

   

 

转载于:https://www.cnblogs.com/zsswpb/p/6329434.html

你可能感兴趣的文章
Spring的工作原理
查看>>
四分树 (Quadtrees UVA - 297)
查看>>
Quartz 学习
查看>>
获取项目路径
查看>>
[第1组]头脑风暴+核心竞争力+功能集+NABCD
查看>>
E20180518-hm
查看>>
jwt vs session
查看>>
ThinkPHP关联模型详解
查看>>
(转)vue入门
查看>>
Ajax写分页查询(实现不刷新页面)
查看>>
CSS滚动条样式定制
查看>>
如何在linux下开启FTP服务
查看>>
Java实验报告(实验四)
查看>>
数据结构&图论:欧拉游览树
查看>>
自我介绍
查看>>
关于CSS绘制图形的转载
查看>>
IDEA更换背景颜色与字体
查看>>
vue-router
查看>>
js文字滚动效果实现
查看>>
ajax post传值
查看>>