• Hibernate中的Session


       我们之前也经常使用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():清除缓存中所有的持久化对象


       

  • 相关阅读:
    jQuery 复选框全选反选
    Linux安装JDK详细步骤
    C++Primer>#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
    OpenCV常见的几种背景消除的方法
    无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
    #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
    CEdit控件输入数字限制(转)
    将自己的博客转移,优化
    Window Style
    this指针基础介绍
  • 原文地址:https://www.cnblogs.com/zsswpb/p/6329434.html
Copyright © 2020-2023  润新知