Hibernate02
2.1 掌握Hibernate三种对象状态:临时状态、持久化状态、游离化状态(重点)
1、临时状态
当前对象没有持久化的OID,在session中也不存在
2、持久化状态
当前对象有持久化的OID,而且也在session存在
3、游离状态
当前对象有持久化的OID,但是不在session中了
2.2 了解hibernate三种对象状态的别名
1、临时态(瞬时态)transient
2、持久化态 persisent
在持久化状态的时候,具体自动更新数据库的能力
3、游离态 (托管态、离线态)detached
三中状态之间的转换:
从瞬时态到持久态 save update saveorupdate
从游离态到持久态 save update saveorupdate
从持久态到临时态 delete
从持久态到游离态 clear flush evict
2.3 掌握 get()、load()方法,明白其差异
Get方法和load方法都是查询数据的方法
Get方法是立即查询而load方法用的是懒加载查询
Get方法在查询数据的时候,如果没有找到数据返回null,用load方法查询数据的时候,如果没有数据就报空指针异常
2.4 明白延迟加载和立即加载的特点和区别
立即加载,当查询数据的时候,会立刻把所有用到的数据都一起加载完成。
延时加载,当查询数据的时候,会加载当前需要的数据,当前不需要的数据不会加载。
2.5 使用save方法完成增加功能
Save(obj)
2.6 使用update方法完成修改功能
在更新之前要先去查询数据
Update(obj)
2.7 使用delete方法完成删除功能
在删除之前要先去查询数据
Delete(obj)
2.8 了解事务的隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、 Serializable
2.9 了解事务的传播特性
PROPAGATION_REQUIRED(默认值) -- A中有事务,使用A中的事务.如果没有,B就会开启一个新的事务,将A包含进来.(保证A,B在同一个事务中),默认值!!
* PROPAGATION_SUPPORTS -- A中有事务,使用A中的事务.如果A中没有事务.那么B也不使用事务.
* PROPAGATION_MANDATORY -- A中有事务,使用A中的事务.如果A没有事务.抛出异常.
* PROPAGATION_REQUIRES_NEW -- A中有事务,将A中的事务挂起.B创建一个新的事务.(保证A,B没有在一个事务中)
* PROPAGATION_NOT_SUPPORTED -- A中有事务,将A中的事务挂起.
* PROPAGATION_NEVER -- A中有事务,抛出异常.
* PROPAGATION_NESTED -- 嵌套事务.当A执行之后,就会在这个位置设置一个保存点.如果B没有问题.执行通过.如果B出现异常,运行客户根据需求回滚(选择回滚到保存点或者是最初始状态)
3.0 session的一级缓存(重点)
1、hibernate一共提供两种缓存,一个是一级缓存(session,自动开启),一个是二级缓存(sessionFactory,需要手动开启)
2、一级缓存
当去查询数据的时候,首先先去查询缓存,如果缓存中存在该数据,就直接从缓存中取出,否者就会直接去查询数据库,然后在把查询到的数据保存到缓存中。
session.clear();// 清空session中的缓存session.evict(stu);// 清空缓存中,指定的对象
session.flush();// 强行把缓存中的数据和数据库的数据同步,
// 每次在执行sava/delete/update/get这些方法之前都会先执行flush()
Eclipse/myeclispe在xml配置文件中无法提示的问题解决
1、根据约束的头文件,下载对应的约束
2、复制约束头文件的约束url
3、在开发工具中,点击window--preference--搜索xml,找到xml catalog,再右侧点击add