update

Hibernate的Session介绍[转 adoocoke]

微笑、不失礼 提交于 2020-03-19 18:16:53
Session Session是Hibernate向应用程序提供操作数据的主要接口, 他提供了保存、更新、删除、加载Java对象的方法。 Session的缓存 Session有一个缓存,用来缓存Java对象。 一般的数据库操作,都要从先从Session的缓存中获取,如果缓存中获取不到,hibernate才会去数据库中获取。 缓存的作用 缓存的作用不言而喻。 1、减少数据访问的频率。2、保持保证数据相关记录与缓存中的同步。 清理缓存 Session的save、update、delete方法, 只有在清理缓存的时候才向数据库中执行一条Sql语句。 所以, Session清理缓存的时间点,是个关键概念。 Session会在一下几个时间点清理缓存,并执行相关语句: a、当应用程序调用 org.hibernate.Transaction 的 commit() 方法的时候, commit() 方法先 清理缓存,然后再向数据库提交事务。 b、当应用程序通过 Hibernate 的 Query查询接口等执行查询操作 时,如果缓存中持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。 c、当应用程序显式调用 Session 的 flush() 方法的时候。 Java对象在Hibernate中的状态 介绍缓存的方法之前,先介绍一下java对象在缓存中的几种状态

hibernate在持久对象的生命周期(三州:自由状态,持久状态,自由状态 之间的转换)

落花浮王杯 提交于 2020-03-19 18:16:33
三种状态的基本概念: 1。 临时身份(Transient):也被称为自由状态,它只存在于内存中,并且在数据库中没有相应的数据。 使用new创建的对象,久化,没有处于Session中,处于此状态的对象叫暂时对象; 2, 持久化状态(Persistent):与session关联而且在数据库中有对应数据。 已经持久化。增加到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象; 3, 游离状态(Detached):持久化对象脱离了Session的对象。如Session缓存被清空的对象。 特点:已经持久化,但不在Session缓存中。 处于此状态的对象叫游离对象; ×√ 暂时状态 (Transient) 持久化状态 (Persistent) 游离状态 (Detached) 是否处于Session缓存中 × √ × 数据库中是否有相应记录 × √ √ 游离对象和暂时对象异同: 两者都不会被Session关联,对象属性和数据库可能不一致; 游离对象有持久化对象关闭Session而转化而来,在内存中还有对象所以此时就变成游离状态了; Hibernate和SQL的关系: 在操作了hibernate的方法如save()等后。并没有直接生成sql语句,去操作数据库。而是把这些更新存入Session中。仅仅有Session缓存要被更新时,底层的sql语句才干运行

MySql中的时间类型datetime,timestamp,date,year比较

你离开我真会死。 提交于 2020-03-19 12:58:43
MySQL日期类型、日期格式、存储空间、日期范围比较。 日期类型 存储空间 日期格式 日期范围 ------------ --------- --------------------- ----------------------------------------- datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038 date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31 year 1 bytes YYYY 1901 ~ 2155 在 MySQL 中创建表时,这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。 timestamp默认值有三种: ■NULL ■NOT NULL DEFAULT CURRENT_TIMESTAMP ■NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 其中, ■CURRENT_TIMESTAMP - 当更新此条记录时

linux入门

倾然丶 夕夏残阳落幕 提交于 2020-03-19 08:20:52
二、更新 1. sudo apt-get update 更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,这样才能获取到最新的软件包 2. sudo apt-get upgrade 升级已安装的所有软件包,升级的版本就是更新的源地址里的版本,因此,在执行 upgrade 之前一定要执行 update, 这样才能更新到最新的 来源: 51CTO 作者: 山药当人参 链接: https://blog.51cto.com/14156081/2449106

MySQL基础篇(06):事务管理,锁机制案例详解

℡╲_俬逩灬. 提交于 2020-03-19 07:19:00
本文源码: GitHub·点这里 || GitEE·点这里 一、锁概念简介 1、基础描述 锁机制核心功能是用来协调多个会话中多线程并发访问相同资源时,资源的占用问题。锁机制是一个非常大的模块,贯彻MySQL的几大核心难点模块:索引,锁机制,事务。这里是基于MySQL5.6演示的几种典型场景,对面MySQL这几块问题时,有分析流程和思路是比较关键的。在MySQL中常见这些锁概念:共享读锁、排它写锁 ; 表锁、行锁、间隙锁。 2、存储引擎和锁 MyISAM引擎:基于读写两种模式,支持表级锁 ; InnoDB引擎:支持行级别读写锁,跨行的间隙锁,InnoDB也支持表锁 ; 3、锁操作API LOCK TABLE name [READ,WRITE] ;加表锁 UNLOCK TABLES ; 释放标所 二、MyISAM锁机制 1、基础描述 MySQL的表级锁有两种模式:共享读锁(Read-Lock)和排它写锁(Write-Lock)。针对MyISAM表的读操作,不会阻塞其他线程对同一表的读请求,但阻塞对同一表的写请求;针对MyISAM表的写操作,会阻塞其他线程对同一表的读和写操作;MyISAM引擎读写操作之间,以及写与写操作之间是串行化。当一次会话线程获取表的写锁后,只有当前持有锁的会话线程可以对表进行操作。其它线程的读、写操作都会等待,直到锁被释放为止。 2、验证案例

深入浅出oracle锁---原理篇

孤街醉人 提交于 2020-03-18 22:35:41
3 月,跳不动了?>>> 这几天项目中遇到了数据库锁的问题,还在解决中,找到了一篇原理性的文章,分享一下。 在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资源的并发性访问串行化,oracle中的锁就可以提供这样的功能,当事务在对某个对象进行操作前,先向系统发出请求,对其加相应的锁,加锁后该事务就对该数据对象有了一定的控制权限,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作(可以做select动作,但select 利用的是undo中的前镜像数据了). Oracle锁的分类 Oracle锁基本上可以分为二类 a:共享锁(share locks) 也称读锁,s锁 b:排它锁 (exclusive locks) 也称写锁,x锁 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 按锁保护的内容分类 oracle提供多粒度封锁机制,按保护对象来分,据此又可以分为 a:dml锁, data

将 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS

血红的双手。 提交于 2020-03-18 15:48:43
升级概述 其实如果有条件的话还是直接重新安装Ubuntu 18.04 LTS比较好,不过此文针对的是那些无法重装的。 开始升级 1. 更新Ubuntu 16.04 在升级之前,您应该先更新当前的16.04,建议升级之前更新/升级所有已安装的软件包。 sudo apt update && sudo apt dist-upgrade && sudo apt autoremove 2. 安装Ubuntu update manager 更新完系统后,运行一下命令安装update-manager-core(如果您没有安装) 命令流程: sudo apt-get install update-manager-core 3. 检查设置lts 打开update-manager配置文件并确保提示行设置为 lts。 sudo nano /etc/update-manager/release-upgrades Prompt=lts 4. 执行升级命令 sudo do-release-upgrade -d 当屏幕出现升级提示是 选择y 等待所有的软件包下载...安装...到重启... 当安装完成后,你的系统就升级到最新的Ubuntu开发版本 5. End 来源: https://www.cnblogs.com/project/p/10003787.html

15条SQLite3语句

左心房为你撑大大i 提交于 2020-03-18 13:58:04
转自: http://www.thegeekstuff.com/2012/09/sqlite-command-examples/ SQLite3 is very lightweight SQL database which focuses on simplicity more than anything else. This is a self-contained serverless database engine, which is very simple to install and use. While most of the commands in the SQLite are similar to SQL commands of other datbases like MySQL and ORACLE, there are some SQLite SQL commands that are different. This article explains all the basic SQL commands that you need to know to use the SQLite database effectively. If you don’t have sqlite installed, execute “yum install sqlite” to

oracle触发器使用总结

只谈情不闲聊 提交于 2020-03-18 13:57:28
1.说明 1)触发器是一种特殊的存储过程, 触发器一般由事件触发并且不能接受参数 ,存储器由语句块去调用 2)触发器分类:   1.DML触发器: 创建在表上,由DML事件引发   2.instead of触发器: 创建在视图上并且只能在行级上触发 ,用于替代insert,delete等操作 (由于oracle中不能直接对有两个以上的表建立的视图进行DML操作,所以给出替代触发器,它是专门为进行视图操作的一种处理方法)   3.DDL触发器: 触发事件时数据库对象的创建和修改   4.数据库事件触发器:定义在数据库或者模式上,由数据库事件触发 3)组成:   1.触发事件:引发触发器被触发的事件 DML语句(INSERT, UPDATE, DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象)、数据库系统事件       (如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。   2.触发时间:即该触发器是在触发事件发生之前 (BEFORE)还是之后(AFTER)触发   3.触发操作:触发器触发后要完成的事情   4.触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,触发器才会执行触发操作。   5.触发条件:由WHEN子句指定一个逻辑表达式

数据库子查询、视图、事务

[亡魂溺海] 提交于 2020-03-18 04:37:46
目录 复习 联合分组 子查询 all与any:区间修饰条件 视图:view 视图的增删改 事务 复习 """ 1、单表查询 增删改查的完整语法 select distinct 字段 from 表 where group by having order by limit 比较:> < = 区间:between and | in | not in 逻辑: and or not 相似:like _% 正则:regexp 聚合函数:group_concat()、max() having:可以对 聚合函数 结果进行筛选,不能使用 聚合函数 别名 order by:分组后对 聚合函数 进行排序,能使用 聚合函数 别名 limit:条数 | 偏移,条数 2、多表查询 内连接:from emp inner join dep on emp.dep_id = dep.id 只保存两表有对应关系的记录 左连接:from emp left join dep on emp.dep_id = dep.id 左表记录全部保存,右边没有对应记录空填充 右连接:from emp right join dep on emp.dep_id = dep.id 右表记录全部保存,左边没有对应记录空填充 全连接: from emp left join dep on emp.dep_id = dep.id union from