我的见解之hibernate(三)

【SpringBoot学习三】springboot2+hibernate5 springboot2集成hibernate5,先准备一个数据库及java驱动,我用的是mysql。 集成步骤如下 1.pom配置 需要的包如下,hibernate、spring事务、连接池、ORM、数据库驱动 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibe... 阅读详情

通过Session操纵对象

Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法.
Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应. Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为刷新缓存(flush)
站在持久化的角度, Hibernate 把对象分为 4 种状态: 持久化状态, 临时状态, 游离状态, 删除状态. Session 的特定方法能使对象从一个状态转换到另一个状态.

Session 缓存可减少 Hibernate 应用程序访问数据库的频率。

<span style="font-size:24px;">@Test
	public void test() {
		News news1 = (News) session.get(News.class, 1);
		System.out.println(news1);
		//session.clear();
		News news2 = (News) session.get(News.class, 1);
		System.out.println(news2);</span>

发送了一条sql语句,现在session中找,没有去二级缓存中找,没有再去数据库中查找,所以只发了一条



flush:Session 按照缓存中对象的属性变化来同步更新数据库
默认情况下 Session 在以下时间点刷新缓存:
显式调用 Session 的 flush() 方法
当应用程序调用 Transaction 的 commit()方法的时, 该方法先 flush ,然后在向数据库提交事务
当应用程序执行一些查询(HQL, Criteria)操作时,如果缓存中持久化对象的属性已经发生了变化,会先 flush 缓存,以保证查询结果能够反映持久化对象的最新状态
flush 缓存的例外情况: 如果对象使用 native 生成器生成 OID, 那么当调用 Session 的 save() 方法保存对象时, 会立即执行向数据库插入该实体的 insert 语句.
commit() 和 flush() 方法的区别:flush 执行一系列 sql 语句,但不提交事务;commit 方法先调用flush() 方法,然后提交事务. 意味着提交事务意味着对数据库操作永久保存下来。


对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制

Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE. Oracle 默认的事务隔离级别为: READ COMMITED
Mysql 支持 4 种事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ

<!-- 设置 Hibernate 的事务隔离级别 -->
       <property name="connection.isolation">2</property>

eNSP常见故障处理 eNSP无法启动设备一直停在#井号的问题的解决方案? 阅读详情

相关推荐

ubuntu20.04安装Qt5.15.2并配置环境

qt官方取消了离线安装的方式,所以推荐在线安装,当然,如果想要自己通过源码编译也可以,参考官方文档:https://wiki.qt.io/Building_Qt_5_from_Git。 在线安装: 1.到官方网站下载:wget https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run 2.修改文件权限:chmod 777 qt-unified-linux-x64-online.run

f120854632的博客 8807

我的见解之hibernate(五)

Session的方法 save():使一个临时对象转变为持久化对象,先放入session缓存中,在flush的时候执行一条insert语句,插入数据库。如果在指定了OID的生成方式时,new出对象并尝试给id赋值,也没用,数据库本地依旧采用给定的方式生成主键 News news = new News("JAVA","guo",new Date()); news.setId(50000);

Java_Soldier的博客 7666

如何免费访问和使用Gemini API?

Gemini Ultra具有最先进的性能,在几个指标上超过了GPT-4的性能。它是第一个在大规模多任务语言理解基准测试中超越人类专家的模型,该基准测试57个不同学科的世界知识和解决问题的能力。Gemini是谷歌迄今为止开发的最先进、最庞大的AI模型。它为多模态而建,理解并处理不同类型的数据,比如文本、代码、音频、图像和视频。下面我们将加载Masood Aslami的图像,并用它来测试Gemini Pro Vision的多模态性。有了Gemini可以为查询提供图像、音频和文本,获得几乎完美的答案。

java_cjkl的博客 1万+

我的见解之hibernate(八)

内容:详解*.hbm.xml关系映射配置文件 hibernate-mapping     类层次:class     主键:id     基本类型:property     实体引用类: many-to-one  |  one-to-one     集合:set | list | map | array     one-to-many     many-to-many     子

Java_Soldier的博客 7752

手把手解决AutoDock安装那些坑:从autogrid报错到.map文件生成(Win10/11环境)

本文详细解析了在Win10/11环境下安装AutoDock时遇到的常见问题,特别是autogrid报错和.map文件生成失败的情况。通过实战验证的解决方案,包括环境变量设置、Python版本管理、文件权限调整等,帮助用户顺利完成安装并提升分子对接研究效率。

weixin_42548888的博客 200

关于hibernate的见解

Hibernate:     什么是hibernate:         Hibernate它是一个轻量级的jdbc封装,也就是说,我们可以使用hibernate来完成原来我们使用jdbc完成操作,就是与数据库的交互操作。它是在dao层去使用的。         对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping)   

github_39191620的博客 523

Rocky Linux 9 离线环境Docker部署实战:从依赖打包到服务启动

本文提供了一份详尽的Rocky Linux 9离线环境Docker部署实战指南。针对无法访问外网的生产或内网服务器,文章详细讲解了如何在联网跳板机上下载Docker二进制包及所有系统依赖RPM包,并完成打包。随后,手把手指导在离线服务器上进行依赖安装、二进制文件部署、systemd服务配置、SELinux与防火墙调优,最终实现Docker服务的成功启动与验证。

weixin_28363123的博客 142

我的见解之hibernate(七)

hibernate.cfg.xml的一些配置        10 5 2 2000 2000 10 100 30 hibernate.jdbc

Java_Soldier的博客 7817

FFmpeg + Qt 实现摄像头采集与 MP3 背景音乐 RTSP 推流

在直播或视频监控场景中,我们经常需要将摄像头画面与背景音乐混合后推送到 RTSP 服务器。本文将详细介绍如何使用Qt框架结合摄像头实时采集(Windows 下使用dshow,Linux 使用v4l2视频预览(显示为 QImage)视频 H.264 编码 + RTSP 推流从 MP3 文件读取音频,重采样为 AAC 编码并推流循环播放音频文件解决中文文件路径打开失败的问题文章将剖析每个技术环节的关键代码,并给出完整的类实现。

weixin_45397344的博客 504

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 559

我的见解之hibernate(九)

Hibernate 把持久化类的属性分为两种: 值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期 实体(entity)类型: 有 OID, 可以被单独持久化, 有独立的生命周期 显然无法直接用 property 映射 pay 属性 Hibernate 使用 元素来映射组成关系, 该元素表名 pay 属性是 Worker 类一个

Java_Soldier的博客 7529

华为OD机试双机位C卷-魔法收积木 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【魔法收积木】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od - 魔法收积木。

qq_45776114的博客 1941

我的见解之hibernate(十三)

HQL检索方式 HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. 它有如下功能: 在查询语句中设定各种查询条件 支持投影查询, 即仅检索出对象的部分属性 支持分页查询 支持连接查询 支持分组查询, 允许使用 HAVING 和 GROUP

Java_Soldier的博客 7695

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Hibernate简单得见解

Hibernate.cfg.xml  连接数据库用的  设置数据库方言(dialect)  设置数据库驱动  可设置展示sql以日志形式展示(show_sql) 并且格式化输出sql(format_sql)  更直观可读性高   设置会话的管理方式(和线程进行绑定)指定当前session范围和上下文由谁来跟踪管理   Hibernate中的实体类我觉得很有必要实现Serializable接口 ...

Mr_ZhangAdd的博客 319

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

我的见解之hibernate(六)

通过 Hibernate 调用存储过程 Work 接口: 直接通过 JDBC API 来访问数据库的操作 Session 的 doWork(Work) 方法用于执行 Work 对象指定的操作, 即调用 Work 对象的 execute() 方法. Session 会把当前使用的数据库连接传递给 execute() 方法.

Java_Soldier的博客 7616

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

json+hibernate死循环问题的一点见解

Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarch

lkl713的专栏 6194

我的见解之hibernate(四)

站在持久化的角度, Hibernate 把对象分为 4 种状态: 持久化状态, 临时状态, 游离状态, 删除状态. Session 的特定方法能使对象从一个状态转换到另一个状态. 临时对象(Transient): 就是我们new的就是临时状态,他还没有OID 在使用代理主键的情况下, OID 通常为 null 不处于 Session 的缓存中 在数据库中没有对应的记录

Java_Soldier的博客 7631

关于hibernate的一点见解

用了hibernate开发项目已经很久了,尤其是delete(Object obj)方法,我个人一直认为delete只能删除persist状态的对象,正如api所说:voiddelete(Object object)           Remove a persistent instance from the datastore.不过今天我无意之中,使

zcl198715的专栏 508

Hibernate总结(三)

8.hql查询。   Hibernate query language。hql查询中关键字不区分大小写,但是类和属性都是区分大小写的。   1.简单属性查询。   单一属性查询,返回属性结果集列表,元素类型和实体类的相应的类型一致。 List students = session.createQuery("select name from Student").list(); for

6571

SSH(spring、struts2、hibernate)三大框架整合

SSH(spring、struts2、hibernate)三大框架整合前言:使用SSH三大框架也很久了,框架的配置方法很多,使用最多的两种方法莫过于注解版( annotation )以及配置版(xml),其中我认为比较麻烦的当属配置版,其中需要配置的内容很多,而且有些细节部分需要格外注意,所以今天就和大家来分享一下。 声明:本文只是个人见解,所以有不对之处,希望大家指正。下面就开始来配置吧! 首

wxw1997a的博客 2647

Hibernate框架介绍以及入门 【三】Hibernate核心API

/ 使用get方法来进行查询/**/// 使用load方法查询//发送SQL语句// 提交事务三、Session:类似Connection对象是链接对象(实现Hibbernate和数据库建立连接)Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。

2401_89791727的博客 801

我的见解之hibernate(十)

映射双向n-1关系: 举个简单的例子,顾客和订单的关系,一个顾客可以拥有多个订单,而多个订单可以同时属于一个顾客,这就是双向n-1关系, 在Customer一端,需要持有装载着Order集合的引用 /* * 1. 声明集合类型时, 需使用接口类型, 因为 hibernate 在获取 * 集合类型时, 返回的是 Hibernate 内置的集合类型, 而不是 JavaSE 一个标准的

Java_Soldier的博客 7481

我的见解之hibernate(二)

下面补全对上篇文章第四步的几个变量解析 SessionFactory sessionFactory = null;   Configuration configuration = new Configuration().configure();  ServiceRegistry serviceRegistry = new S

Java_Soldier的博客 3083
上一篇: 我的见解之hibernate(二)
下一篇: 我的见解之hibernate(四)
Java_Soldier
博客等级 码龄10年 27粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值