Hibernate 中的session 的flush、reflush 和clear 方法 ,及数据库的隔离级别
来源:互联网 发布:提前多久淘宝买高铁票 编辑:程序博客网 时间:2024/06/05 16:21
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. flush 方法:
说白一点:如果session 中的某个类的属性发生了改变,使用flush() 方式,去更改数据库中的记录,使其和改变后的session 中的对象一致。
打个不恰当的比方:session 这时是主动方,数据表是被动方,被动方应根据主动放的改变而改变,一保存和主动方一致。flush()就是让数据库的记录跟着session 中对象的改变而改变
<span style="font-size:14px;">/** * flush :使用数据表中的记录和Session 缓存 中的 对象的状态保存一致,为了保持一致,则可能会发送对应的SQL 语句。 * 是为了保证缓存的记录 和数据表中的记录一致,向数据库方式SQL 语句,去改变数据库中的记录使其和session 中的 * 的一致. * * 1. 在transaction 的commit() 方法中: 先调用session 的flush方法,在提交事务 * 2. flush() 方法 可能会发送SQL 语句,但不会提交事务; * * 3. 注意: 在未提交事务或显示的调用session.flush() 方法之前,也有可能会进行flush() 操作 * ①.因为执行HQL 和QBC 时,需要保证获取的记录是最新的,因此 执行HQL 或QBC 查询,会先进行flush()操作, 以得到数据表中的最新的记录 * ②. 若记录的ID 是由底层数据库使用自增的方式生成的,则在调用save() 方法后, 就会立即方式INSERT 语句 * 因为save 方法后,必须保证对象中的ID 是 存在的! * 但是当生成ID 的方式,换成hibernate 生成的化,就不会在transaction.commit之前在执行sql语句了 * 这就是ID 生成方式对 放送sql 语句的影响! */@Testpublic void testSessionFlush2(){Person person = new Person("Zhagng", "sleeping", new Date());session.save(person);}@Testpublic void testSessionFlush(){Person person = (Person) session.get(Person.class,32768);person.setName("Jim");Person person2 = (Person) session.createCriteria(Person.class).uniqueResult();System.out.println(person2);}</span>2. reflush 方法:
打个不恰当的比方:数据表是主动方,session 这时是被动方,被动方应根据主动放的改变而改变,一保存和主动方一致。reflush()就是让session 中对象跟着数据库的记录的改变而改变
/** * refresh() :会强制发送SELECT 语句,以使Session 缓存中对象的状态和数据表中对应的记录保持一致! * */@Testpublic void testRefresh(){Person person = (Person) session.get(Person.class, 1);System.out.println(person);session.refresh(person);System.out.println(person);}3. clear()清理缓存
/** * clear():清理缓存 */@Testpublic void testClear(){Person person = (Person) session.get(Person.class, 1);session.clear();Person person2 = (Person) session.get(Person.class, 1);}
0 0
- Hibernate 中的session 的flush、reflush 和clear 方法 ,及数据库的隔离级别
- Hibernate中的session.clear(),save(),和flush()的理解
- Session的clear方法和flush方法
- Session的clear方法和flush方法
- Session的clear方法和flush方法 .
- Session的clear方法和flush方法
- Hibernate深入理解----03操作Session缓存方法(flush、refresh、clear,事务隔离级别)
- Hibernate深入理解----03操作Session缓存方法(flush、refresh、clear,事务隔离级别)
- hibernate flush和clear方法的区别
- Hibernate的flush 和 clear 方法解释
- Hibernate中的Session的refresh()方法执行效果与数据库的隔离级别有关
- hibernate session中clear、evict、flush方法的区别
- Hibernate Session中flush、clear、evict方法的区别
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate的evict()方法和clear()方法、flush()方法
- Hibernate的clear(),flush(),evict()方法详解
- 专题三1018
- PackageManager使用详解
- UIView
- vim配置
- Hive基本原理及环境搭建
- Hibernate 中的session 的flush、reflush 和clear 方法 ,及数据库的隔离级别
- UIVIew实战
- Java二分查找算法
- objective-c - 基础篇 - 数据库网络 -- 进程和线程--NSThread
- C# Stuct和Class的区别
- 2016年5月23日--5月29日(19小时,剩2958小时)
- Android4.0 Bitmap Parcel传输源码分析
- 【可视化】数据仓库与数据挖掘大作业
- PHP用代码实现文件下载