关于hibernate的一些总结

1.hql查询得到一个完整的实体对象,通过set操作改变对象里的属性后,会自动执行update操作

2.hql查询得到一个完整的实体对象,是不存在一级缓存的

3.原生sql查询得到一个完整对象,会放入一级缓存

4.同一事务中,在执行persist方法后,自增id的id值就已经可以得到了,而不是事务提交时才能获取

5.同一事务中,通过update语句修改某实体字段,再次使用hql查询时,得到的是修改后的, 不需要flush操作(不遵循先读后写)

6.表关联时,如果fetch=eager,是执行级联查询,fetch=lazy是多sql查询

7.修改关联外键的方法: 两个关联实体级联查出,new一个新的关联对象,对新new的对象执行persist,然后set该外键(或者不单独persist,执行个关联保存也可以)

8.保存一个实体,对实体设置一个已经在关联表中存在的外键: 对关联的实体对象只设置关联的id,并且二者关联不允许级联保存

9. 关于@Transactional(readOnly = true)

如果一个事务设置成只读, 则对原查出的持久化对象修改, 不会在事务提交时做修改

如果一个事务设置成只读,则在执行udpate操作会报错

 

 

posted @ 2018-08-21 10:10  車輪の唄  阅读(9)  评论(0编辑  收藏  举报  来源