Day03
对象的状态
临时状态:与数据库没有对应的关系,和session没有关联,一般是刚new出来的对象
持久化状态:对象在session的管理之中,特点:有OID,对象的修改会同步到数据库中。
游离状态:与数据库有对应记录,但是对象不在session管理之中
删除状态:调用了close之后。
通过调用方法来改变四种状态:
save():将临时状态变成持久化
update():将游离状态变成持久化
saveOrUpdate():将临时或游离转化成持久化
delete():把持久化或者游离转化成删除
load()懒加载:不会马上加载数据库而是在第一次使用非id或者class属性时执行SQL语句,如果数据不存在就会抛出异常
总结
一、集合映射。
类型 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()
HQL查询
特点:与SQL相似,HQL的关键字不区分大小写,类名和属相名区分大小写。
Xml中如果有特殊字符想要使用的话想要用CDATA区