Hibernate4之session核心方法

在学习session的核心方法之前,我们先了解下hibernate中几种对象的状态:

暂时状态:这样的状态就好像咱们公司请的暂时员工一样,他在公司里没有相关的资料和id。

    特点:在使用代理主键的情况下, OID 通常为 null
        不处于 Session 的缓存中
        在数据库中没有相应的记录   

持久化状态:我们能够理解成我们公司的正式在岗职工。

     特点:OID 不为 null
 位于 Session 缓存中
若在数据库中已经有和其相应的记录, 持久化对象和数据库中的相关记录相应
Session 在 flush 缓存时, 会依据持久化对象的属性变化, 来同步更新数据库
在同一个 Session 实例的缓存中, 数据库表中的每条记录仅仅相应唯一的持久化对象

游离状态:这样的就类似我们公司在职休假的员工,有其相关的在岗资料。

    特点:OID 不为 null
不再处于 Session 缓存中
普通情况需下, 游离对象是由持久化对象转变过来的, 因此在数据库中可能还存在与它相应的记录

删除状态:这样的就类似我们的已经离职的员工

    特点:在数据库中没有和其 OID 相应的记录
不再处于 Session 缓存中
普通情况下, 应用程序不该再使用被删除的对象

session的save方法

save方法能够使一个暂时对象转化为一个持久对象。

1、把要save的对象增加到session中。使它进入持久化状态

2、选用映射文件指定的标识符生成器, 为持久化对象分配唯一的 OID. 在 使用代理主键的情况下, setId() 方法为 News 对象设置 OID 使无效的.
3、计划运行一条 insert 语句:在 flush 缓存的时候
4、Hibernate 通过持久化对象的 OID 来维持它和数据库相关记录的相应关系. 当 News 对象处于持久化状态时, 不同意程序任意改动它的 ID
5、persist() 和 save() 差别:
当对一个 OID 不为 Null 的对象运行 save() 方法时, 会把该对象以一个新的 oid 保存到数据库中;  但运行 persist() 方法时会抛出一个异常.

session的get方法和load方法

同样点:都能够依据跟定的 OID 从数据库中载入一个持久化对象
不同点:
当数据库中不存在与 OID 相应的记录时, load() 方法抛出 ObjectNotFoundException 异常, 而 get() 方法返回 null
两者採用不同的延迟检索策略:load 方法支持延迟载入策略。

而 get 不支持。


session的update方法

1、Session 的 update() 方法使一个游离对象转变为持久化对象, 而且计划运行一条 update 语句.
2、若希望 Session 仅当改动了 News 对象的属性时, 才运行 update() 语句, 能够把映射文件里 <class> 元素的 select-before-update 设为 true. 该属性的默认值为 false
3、当 update() 方法关联一个游离对象时, 假设在 Session 的缓存中已经存在同样 OID 的持久化对象, 会抛出异常
4、当 update() 方法关联一个游离对象时, 假设在数据库中不存在对应的记录, 也会抛出异常. 

session的saveOrUpdate方法

1、Session 的 saveOrUpdate() 方法同一时候包括了 save() 与 update() 方法的功能

2、该方法使用的情况:

判定对象为暂时对象的标准
Java 对象的 OID 为 null
映射文件里为 <id> 设置了 unsaved-value  属性, 而且 Java 对象的 OID 取值与这个 unsaved-value 属性值匹配

session的delete方法

1、Session 的 delete() 方法既能够删除一个游离对象, 也能够删除一个持久化对象
2、Session 的 delete() 方法处理过程
计划运行一条 delete 语句
把对象从 Session 缓存中删除, 该对象进入删除状态.
3、Hibernate 的 cfg.xml 配置文件里有一个 hibernate.use_identifier_rollback 属性, 其默认值为 false, 若把它设为 true, 将改变 delete() 方法的执行行为: delete() 方法会把持久化对象或游离对象的 OID 设置为 null, 使它们变为暂时对象


转载于:https://www.cnblogs.com/llguanli/p/6889162.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 同步锁死锁,Android多线程研究(3)——线程同步和互斥及死锁

为什么会有线程同步的概念呢&#xff1f;为什么要同步&#xff1f;什么是线程同步&#xff1f;先看一段代码&#xff1a;package com.maso.test;public class ThreadTest2 implements Runnable{private TestObj testObj new TestObj();public static void main(String[] args)…

QML与C++交互:登陆界面设计

QML与C交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境&#xff1a; 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前台界面,C后台负责逻辑 效果图: 源码: 前台qml文件 login.qml /******************************************************…

html怎么在字体中加波浪线,CSS3实现文字波浪线效果

前言css的设计之巧妙&#xff0c;实现之精妙&#xff0c;细细寻味&#xff0c;其妙非凡&#xff0c;妙不可言。这波浪线&#xff0c;取巧的运用了linear-gradient属性&#xff0c;合角度、颜色、位置于一体&#xff0c;配合background-size&#xff0c;background-repeat&#…

NET Core 指令启动

ASP.NET Core 是新一代的 ASP.NET&#xff0c;早期称为 ASP.NET vNext&#xff0c;并且在推出初期命名为ASP.NET 5&#xff0c;但随着 .NET Core 的成熟&#xff0c;以及 ASP.NET 5的命名会使得外界将它视为 ASP.NET 的升级版&#xff0c;但它其实是新一代从头开始打造的 ASP.N…

html文本显示状态代码中,HTML文本显示状态代码中,表示?

文本如何大小判别偏心受压剪力墙的。能源能量然资提供的自是指源&#xff0c;显示如(&#xff0c;显示能、能、能、能、、热等的械能是机生物原子光能化学总称&#xff0c;不可能源然界的一可再生能于自源可源和再生分为存在次能。状态中表并发儿麻体温生的婴幼易发间低醉期症(…

1807. [NOIP2014]寻找道路P2296 寻找道路

题目描述 在有向图G 中&#xff0c;每条边的长度均为1 &#xff0c;现给定起点和终点&#xff0c;请你在图中找一条从起点到终点的路径&#xff0c;该路径满足以下条件&#xff1a; 1 &#xff0e;路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 &#xff0e;在满足…

html页面 wordpress,WordPress纯代码实现前端页面HTML完美压缩

前言&#xff1a;压缩HTML页面的好处就是略微提升页面加载速度&#xff0c;并给那些爱扒皮的缺德玩意制造些许麻烦。好了将如下代码添加在functions.php中即可&#xff1a;//压缩WordPress前端html代码function wp_compress_html(){function wp_compress_html_main ($buffer){$…

js中的作用域

关于变量和参数问题&#xff1a; 函数外面定义的变量是全局变量&#xff0c;函数内可以直接使用。 在函数内部没有使用var定义的变量则为全局变量&#xff0c;在函数内使用var关键字定义的变量是局部变量&#xff0c;即出了函数外边无法获取。 js函数定义的参数没有默认值&…

html HTML1300 进行了导航,jquery根据文章H标签自动生成导航目录

jquery根据文章H标签自动生成导航目录2017-11-19 20:57在一些旅游网站&#xff0c;比如说途牛、携程这些&#xff0c;当你看某条线路的详情页时&#xff0c;右边会有相应的第一天、第二天等的目录。这么大的网站&#xff0c;不可能后台添加行程的时候&#xff0c;每一天都要自动…

asp.net core利用DI实现自定义用户系统,脱离ControllerBase.User

前言 很多时候其实我们并不需要asp.net core自带的那么复杂的用户系统&#xff0c;基于角色&#xff0c;各种概念&#xff0c;还得用EF Core&#xff0c;而且在web应用中都是把信息存储到cookie中进行通讯&#xff08;我不喜欢放cookie中&#xff0c;因为有次我在mac系统中的sa…

html的排版标题的是,HTML 5结构排版布局

进行总体布局时候&#xff0c;具体可以用的方法。1.大纲&#xff1a;文档中各内容区块的结构编排。内容区块可以使用标题元素来展示各级内容区块的标题。关于内容区块的编排可以分为“显示编排”和“隐式编排”。显示编排&#xff1a;明确使用section等元素创建文档结构&#x…

[LeetCode]Distinct Subsequences,解题报告

题目 Given a string S and a string T, count the number of distinct subsequences of T in S.A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative po…

2021年河南高考成绩排名查询一分一段表,2018河南高考一分一段统计表,查排名必备!...

原标题&#xff1a;2018河南高考一分一段统计表&#xff0c;查排名必备&#xff01;&#xff1a;点击这里信息省招办公布了2018年普通高招分数段统计表&#xff0c;对每个分数段有多少考生进行了详细统计。你考了多少分&#xff1f;处在哪个位置&#xff1f;快来看看&#xff0…

实用的css样式

当字数超过一行时&#xff0c;可以用...代替 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 这三个样式同时使用才有效&#xff0c;也可以去掉white-space样式&#xff0c;分两行 转载于:https://www.cnblogs.com/maggie-php/p/6906462.html

js滚轮换切屏

js滚轮换切屏 因为全项目不是自己写的&#xff0c;仅仅是帮别人写js滚轮代码&#xff0c;并且别人项目也还未上线。所以仅仅贴出自己写的那段部分代码&#xff0c; 效果&#xff1a;鼠标滚轮滚动时。网頁屏幕一屏一屏的上下切换 (下面代码在本地电脑的IE,chrome与FireFox这三个…

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成

FuseDream: Training-Free Text-to-Image Generation with Improved CLIPGAN Space Optimization 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. CLIPGAN 文本到图…

中文邮件营销html模版,怎么制作邮件营销模板?— —邮件格式

怎么制作邮件营销模板&#xff1f;— —邮件格式U-Mail邮件营销平台发表时间 2017-09-21人气 757次做EDM邮件营销&#xff0c;需要有好的邮件群发工具&#xff0c;还要有好的内容&#xff0c;那么如何制作好邮件营销的模板呢&#xff1f;现在U-Mail邮件群发平台根据已有的一些经…

查询数据库中所有表名

查询数据库中所有表名select table_name from information_schema.tables where table_schemacsdb and table_typebase table; 查询指定数据库中指定表的所有字段名column_nameselect column_name from information_schema.columns where table_schemacsdb and table_nameusers…

【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便...

RabbitMQ是一个老牌的非微软的消息队列组件&#xff0c;一般来说应该能满足中小型公司对消息队列生产的需求&#xff0c;平时我们在.NET开发环境下运用它是可能会需要RabbitMQ.Client的SDK库&#xff0c;此库是官网提供&#xff0c;目前最新发布版本是v4.1.3。在我们对接项目时…

angularJS中,怎么阻止事件冒泡

今天有个童鞋问我&#xff0c;ng怎么阻止事件冒泡&#xff0c;我就简单的贴一下代码吧&#xff0c;也不是什么好高大上的问题 转载于:https://www.cnblogs.com/leoshuaige/p/6910646.html