Session
当批量处理数据过大时,session这个集合会造成内存溢出,需要通过flush把session中的数据刷出到数据库中,让后再clear,清空缓存
一、集合映射。
类型 Java中声明 映射元素
---------------------------------
Set Set <set>
List List <list>
Map Map <map>
数组 ...[] <array>
Bag List/Collection <bag>
---------------
要说明的信息有:
1,只要有集合,就一定有集合表。
2,集合外键。
3,集合元素。
4,对于List和数组,还需要多一个索引列。
5,对于Map,还需要多一个key列。
值类型的集合。
实体类型的集合。
二、关联关系映射(要说明的信息有什么)。
一对多:
1,属性名
2,集合外键
3,关联的实体类型(one-to-many class="")
多对一:
1,属性名
2,外键列名
3,关联的实体类型
多对多:
1,属性名
2,中间表
3,集合外键:引用当前对象表主键值的那外外键
4,关联的实体类型
5,另一个外键:引用关联实体表主键的那个外键。
一些重要的属性:
inverse:
是否放弃维护关联关系。
默认是false,表示可以维护。
实体类型的集合映射中可以使用(一对多、多对多)。
sort:
在内存中排序(类似于TreeSet)
默认为unsorted,即不排序。
在无序的集合映射中可以使用。
order-by:
使用数据库排序,即在SQL中增加orderby子句(类似于LinkedHashSet)。
默认不排序,这里指定的是sql语句中的orderby子句。
在无序的集合映射中可以使用。
cascade:
级联。
默认为none。
在所有的关联关系映射中可以使用。
常用的值:all, save-update, delete, none.
三、Session中的方法。
对象的状态:
Session中 数库中
-----------------------
临时 无 无
持久化 有 最终会有
游离 无 有
删除 调用了delete()方法后
1,操作实体对象的
save()
update()
saveOrUpdate()
delete()
2,操作缓存的
clear() 清空Session缓存,不会执行sql语句。
evict()
flush() 马上执行sql语句,不会清楚Session缓存。
3,查询实体对象的
get()
load()
createQuery()
createCriteria()