- 理解持久和非持久状态:
- create操作传入对象是非持久态的(自己new出来的),create完成后对象变成持久态
- retrieve(read)操作从数据库读取到的对象都是持久化状态,直到会话结束
- update操作应该传入持久状态的对象(先读取,后修改,最后更新)
- delete操作可以直接删除,但也应该先读取,再删除(中间可以进行权限判断等)
- 级联读取
- 级联层次不能太多,防止一次性读取太多数据
- 级联分一对多和多对一,一对多要防止多的一方数量太大
- 缓存
- 一级缓存只在当前会话中有效,一个会话中重复查询一个对象,后面几次查询只是读取缓存
- 二级缓存数据量增大时命中率下降,可以使用memcached等
- 事务范围
- 缩短事务范围,提高数据库的并发性能