session的作用及使用时的注意点
来源:互联网 发布:sql检查字段是否存在 编辑:程序博客网 时间:2024/06/07 12:12
最近学习了hibernate,对涉及到的session做一个简单总结!!!!!!
一:
* flush: 使数据表中的记录和 Session 缓存中的对象的状态保持一致. 为了保持一致, 则可能会发送对应的 SQL 语句.
* 1. 在 Transaction 的 commit() 方法中: 先调用 session 的 flush 方法, 再提交事务
* 2. flush() 方法会可能会发送 SQL 语句, 但不会提交事务.
* 3. 注意: 在未提交事务或显式的调用 session.flush() 方法之前, 也有可能会进行 flush() 操作.
* 1). 执行 HQL 或 QBC 查询, 会先进行 flush() 操作, 以得到数据表的最新的记录
* 2). 若记录的 ID 是由底层数据库使用自增的方式生成的, 则在调用 save() 方法时, 就会立即发送 INSERT 语句.
* 因为 save 方法后, 必须保证对象的 ID 是存在的!
*/
commit和flush的区别:flush完下一步是执行一系列的SQL语句,但是没有提交事务。
commit是先执行flush的操作,然后提交事务,提交事务也就意味着SQL语句更新的数据被同步到数据库即实现了持久化。
二:
customer表的id是order表的外键,通过
@Test
public void testUpdat2(){
Customer customer = (Customer) session.get(Customer.class, 1);
customer.getOrders().iterator().next().setOrderName("GrG");
}
@Test
public void testUpdate(){
Order order = (Order) session.get(Order.class, 1);
order.getCustomer().setCustomerName("FFF");
}
发现testUpdate没有更新数据,而testUpdate2完成了数据更新
三:
refresh(): 会强制发送 SELECT 语句, 以使 Session 缓存中对象的状态和数据表中对应的记录保持一致!
@Test
public void testRefresh(){
News news = (News) session.get(News.class, 1);
System.out.println(news);
session.refresh(news);
System.out.println(news);
}
注意mysql数据库的事务隔离级别默认是可重复读,应该调用
利用控制台进行mysql的控制
win+r
在命令行里输入cmd,进入控制台
输入
>mysql -uroot -p111111;
>show databases;
>use atguigu;
>selsect * from customer;
>select @@tx_isolation;
设置当前musql连接的隔离级别。
>set transaction isolation level read committed;
设置数据库系统的全局的隔离级别。
>set globaltransaction isolation level read committed;
设为 读已提交
四:
clear(): 清理缓存,意味着需要再次提交sql语句,进行commit操作。
@Test
public void testClear(){
News news1 = (News) session.get(News.class, 1);
session.clear();
News news2 = (News) session.get(News.class, 1);
}
- session的作用及使用时的注意点
- 内联函数的使用及注意点
- 内联函数的使用及注意点
- 内联函数的使用及注意点
- Case函数的使用及注意点
- eclipse的简单使用及注意点
- 泛型的使用及注意点
- 结构体的使用及注意点
- 【Session】存活时间自动更新的注意点
- Session的一些操作和注意点
- Android -- ContentProvider的使用及需要注意的点
- Bitmap使用过程中需注意的点及优化
- 移动端audio标签的使用及注意点
- iOS中block的简单使用及注意点
- MediaElement在使用时的注意点
- IP core使用时的注意点
- 使用webpack时的一些注意点
- 使用 iframe sandbox 时的注意点
- java使用java.lang.management监视和管理 Java 虚拟机
- SoapUI 测试Web Service
- 防止独立IP被其它恶意域名恶意解析
- 数据属性
- eclipse运行java程序时不自动保存的解决方法
- session的作用及使用时的注意点
- App Store 审核指南
- Linux下Samba服务器配置
- Android Studio安装技巧
- 京瓷驱动下载链接
- 蓝鸥Unity开发基础——单例
- Javascript -- toFixed()函数
- Js中 If...Else 语句
- lintcode-落单的数