Session方法
Session的save()和persist()方法
Session的save()方法使一个临时对象转变为持久化对象。它完成以下操作:
(1)将临时对象加入到Session缓存中,使其进入持久化状态。
(2)选用映射文件指定的标识符生成器,为持久化对象分配唯一的OID。
(3)计划执行一个insert语句。
Session的save()方法是用来持久化临时对象的。不应将持久化对象或游离对象传递给save()方法。
若将持久化对象传递给save()方法,则该步保存操作是多余的。
若将游离对象传递给save()方法,则会重新生成OID,再保存一次。
Session的persist()方法与save()方法类似,也能将临时对象转变为持久化对象。
persist()方法与save()方法的区别在于:
persist()方法不保证立即为持久化对象的OID赋值,而是有可能在Session清理缓存的时候才为OID赋值。
此外,如果是在事物边界以外调用persist()方法,则该方法不会计划执行insert语句。而save()方法不论是在事物边界以外还是以内,都会计划执行insert语句。
Session的load()与get()方法
Session的load()与get()方法都能从根据给定的OID从数据库中加载一个持久化对象,这两个方法的区别在于:
(1)当数据库中不存在与OID对应的记录时,load()方法抛出org.hibernate.ObjectNotFoundException异常,而get()方法返回为null。
(2)load方法采用配置的加载策略(默认为延迟加载),而get()方法则会忽略配置,总是采用立即加载方法。
Session的update()方法
Session的update()方法使一个游离对象转变为持久化对象。它完成以下操作:
(1)将游离对象加入到Session缓存中,使其转变为持久化对象。
(2)计划执行一个update语句。
当update()方法关联一个游离对象时,若在Session的缓存中已存在相同的OID的对象时,会抛出异常。
疑问:如果数据库总没有对应的记录,会产生异常? update语句如果没有记录更新是不会报错的呀?
Session的saveOrUpdate()方法
Session的saveOrUpdate()方法同时包含了save()方法与update()方法的功能,如果传入的参数是临时对象,就调用save()方法;如果传入的参数是游离对象,就调用update()方法。HIbernate根据对象的OID,version版本属性等来判断参数是临时对象还是游离对象。
Session的merge()方法
Session的merge()方法能够将一个游离对象的属性复制到一个持久化对象中。其处理流程如下:
(1)根据游离对象的OID到Session缓存中查找匹配的持久化对象。若找到匹配的持久化对象,则将游离对象的属性复制到持久化对象中,计划实行一条update语句,然后返回持久化对象的引用。
(2)如果在Session的缓存中没有找到与游离对象OID一致的持久化对象,那么就试图根据该OID从数据库中加载持久化对象。如果数据库中存在匹配的持久化对象,则将游离对象的属性复制到刚加载的持久化对象中,计划实行一条update语句,然后返回持久化对象的引用。
(3)如果数据库中也不存在or对象是临时对象时,则会新建一个对象,将属性赋值到该新建对象中,再持久化新建对象,最后返回新建对象的引用。
merger()和saveOrUpdate()的区别:
调用完meger()对象仍然是脱管状态。
Session的delete()方法
Session的delete()方法用于从数据库中删除一个Java对象。delete()方法既可以删除持久化对象,也可以删除游离对象。其处理过程如下:
(1)如果传入的参数是游离对象,则先使游离对象与Session关联,使它变为持久化对象。如果参数是持久化对象,则忽略该步。
(2)计划执行一个delete语句。
(3)把对象从Session缓存中删除,该对象进入删除状态。
Session的replicate()方法
Session的replicate()方法能够将一个数据库中的对象复制到另一个数据库中。
Session方法的更多相关文章
- Struts2获取Session方法
Struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 方法1:IOC方式action类实现SessionAwar ...
- ThinkPHP函数详解:session方法
ThinkPHP函数详解:session方法 Session方法用于Session 设置.获取.删除和管理操作. Session 用于Session 设置.获取.删除和管理操作 用法 sessi ...
- thinkphp中的session()方法
系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 session($name, $value='') 参数 name(必须):如果传入数组 则表示 ...
- 关于requests的session方法保持cookie的问题。
最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...
- 关于requests的session方法保持不了cookie的问题。(seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录)
最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...
- java WEB学习笔记32:HttpSession 接口常用方法 及 HttpServletRequest接口中的Session方法 Demo
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- thinkPHP中session()方法用法详解
本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 ? ...
- php使用 memcache 来存储 session 方法总结
设置session用memcache来存储 方法I: 在 php.ini 中全局设置 session.save_handler = memcache session.save_path = " ...
- Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. sess ...
- php网站共享session方法(相同一级域名)
这段时间做web开发使用的是php语言 要实现从主站进入子站时无需再登录(如已登录) 使用memcache实现 方法如下 修改php.ini如下 添加 extension=php_memcache.d ...
随机推荐
- 修改PR Cs6,PS Cs6,AU Cs6的启动界面
转载来源:https://jingyan.baidu.com/article/09ea3ede00aeedc0aede39ca.html 百度了很多,只见PS Cs6的启动界面修改教程,PR,AU C ...
- zerotier的下载、安装、配置与使用(win10、ubuntu)
一.需求描述 2020年,由于“野味肺炎”的影响,笔者要开始在家办公,需要远程连接公司的电脑和设备. 但是公司的网络和家里的网络不是同个局域网,不能直接用微软的远程桌面连接.想挂上公司的vpn,但是又 ...
- cf877D
题意简述:矩阵中有的点不能走,你每次可从四个方向走,至少走一步,最多走k步(不能横跨那些不能走的格子),问从(sx,sy)走到(tx,ty)的最短时间是多少? 题意:利用set来加速bfs的过程,原理 ...
- jdk1.7、jdk1.8兼容共存环境配置方案
前提:环境变量配置 JAVA_HOME=%JAVA_HOME8% JAVA_HOME8=E:\jdk1.8.0_40 JAVA_HOME7=E:\jdk1.7.0_51 path 一.jdk是绿色免安 ...
- Excel_b_1
1.Excel简介 数据处理软件,lotus兼容(文件,选项,高级,拉到底,lotus,) 2.Excel功能 数据存储,数据处理,数据分析,数据呈现 3.具体功能 重新认识了Excel,选项,高级选 ...
- 腾讯qlv视频转为MP4格式工具
本文解决上一篇<优酷爱奇艺视频转换为MP4格式工具>留下的腾讯视频qlv转MP4格式问题,教程都是一步步亲手操作的,每一步都有配图.希望各位老板多转发分享,谢谢! 解压软件.(建议关闭所有 ...
- 基于90nm CMOS技术的功能齐全的64Mb DDR3 STT-MRAM
自旋转矩磁阻随机存取存储器(ST-MRAM)有望成为一种快速,高密度的非易失性存储器,可以增强各种应用程序的性能,特别是在用作数据存储中的非易失性缓冲器时设备和系统.为此,everspin开发了基于9 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes(stringstream,sizeof(num)/sizeof(num[0]),打表)
题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间 ...
- windows下安装openjdk
redhat版openjdk,解压后就能用,下载地址https://developers.redhat.com/products/openjdk/download. Azul Zulu版openjdk ...
- AOP配置步骤(XML)
1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...