Hibernate学习记录1
来源:互联网 发布:手机陀螺仪水平仪软件 编辑:程序博客网 时间:2024/06/11 16:28
1.session脏检查机制
使用session从数据库中查出一个对象,如果在外面更新了该对象,那么会自动的使用update进行数据库更新
2.session一级缓存
使用session从数据库中查出一个对象,如果再一次取出该对象不会继续向数据库发送sql语句,返回的对象会是原来的那个对象
3.session清理缓存
session.flush()可以清理缓存,按照缓存对象的属性变化在同步更新数据库,如上面的脏检查机制,因为commit里面会自动调用flush方法清理缓存
4.主键生成方式为native方式的,会在save方法的时候就执行insert语句,而如果是increment的,那么会先执行select,然后在提交事务的时候再插入
5.设置清理缓存的时间点
可以通过session的setFlushMode方法在显示设定清理缓存的时间点
清理缓存的模式
各种查询方法
Transaction的commit方法
Session的flush方法
FlushMode.AUTO(默认)
清理
清理
清理
FlushMode.COMMIT
不清理
清理
清理
FlushMode.NEVER
不清理
不清理
清理
6.对象的状态
7.使用代理主键的情况下,自己为对象设置一个id是无效的
8.当对象处于持久化状态的时候,是不允许设置对象的id的
1.如果是save方法持久化对象,在save使用之后设置id会抛出异常
2.如果是persist方法持久化对象,在save使用之前设置id会抛出异常,save方法不会
9.load和get的区别
1.get方法如果用来获取一个不存在的id的数据会返回null,而load会抛出异常
2.load和get采取的延迟检测策略不同
(1)load方法获取一个对象时,不会发送sql语句,当要使用这个对象的时候才会发送sql语句(2)get方法获取一个对象时,就会发送sql语句
10.update能使一个游离状态的对象转换成一个持久化对象
1.使用update时会发送update语句,无论该对象的属性和数据库的数据是否一致
2.在对象的配置文件处配置select-before-update=true,就可以避免这种情况,这种情况下会执行select语句查找数据库,然后再判断是否要使用sql语句
11.使用update时,如果在session中存在相同id的持久化对象,则会抛出异常,因为这种情况下会有两个持久化对象
12.使用update时,如果数据库中不存在该id所对应的对象,那么也会抛出异常
13.saveOrUpdate方法可以进行save或者update操作
判断标准如下
1.如果对象id为null,那么就进行save
2.如果对象id为null,那么久进行update
如果需要更改判断标准,那么
1.在配置中,id里有个unsaved-value属性,该属性默认为null(所以上面的判断标准为id是否为null)
2.更改该属性,那么如果对象的id和该值一样,那么就使用save方法
14.delete进行删除操作
1.hibernate会根据对应对象的id对数据库的数据进行删除操作
2.如果id不存在那么会抛出异常
3.在执行完delete之后,该对象的id依旧是存在的,如果想在删除之后将该对象的id为null,可以在配置文件中配置如下参数use_identifier_rollback=true
0 0
- hibernate学习记录1
- Hibernate学习记录1
- Hibernate学习记录1 基本概念
- Hibernate学习记录
- hibernate学习记录
- hibernate缓存学习记录
- hibernate学习记录2
- hibernate学习记录3
- hibernate学习记录5
- hibernate学习记录6
- hibernate学习记录7
- hibernate学习记录8
- Hibernate 学习记录
- Hibernate 学习记录 2
- Hibernate 学习记录 3
- Hibernate 学习记录 4
- Hibernate学习记录2
- 关于Hibernate学习记录
- vs2010 单文档MFC 通过加载位图文件作为客户区背景
- 解析 ruby 全局變數
- gtk的国际化
- LocalFile,沙盒
- 一位网友的建议
- Hibernate学习记录1
- 艱難完成 nginx + puma 部署 rails 4的詳細記錄
- 欢迎使用CSDN-markdown编辑器
- ruby線程實現生產者消費者問題示例(隊列Queue實現線程同步)
- POJ 1177 Picture [离散化+扫描线+线段树]
- rudy 繼承 概念
- mysql学习笔记之十四(安全性机制)
- the environment variable java_home (with the value of ) does not point to a valid jvm installation
- Rails命令行常用操作命令簡明總結