Hibernate小知识

Hibernate知识:

1、flush作用
Session.flush用于清理临时缓存,发出sql语句,但不提交事务


2、uuid主键生成策略,加入session管理就会出现id,
此时如果调用session.evict会清空持久化上下文,persitentcontext,
当事务提交时对比镜像查看临时缓存中是否有数据,如果有那么发出sql语句清空临时缓存,
更改persitentcontext中isexistdata为true,但是此时变量已经不存在会报线程安全异常,
事务回滚。解决办法当调用evict时先session.flush


3、natived主键生成策略,加入session管理发sql语句,不会有问题


4、assigned主键生成策略,如果是session.save(animal),
然后session.update(animal)最后session.save(user),但是发出的语句是先insert两条语句,
然后才更新。如果要做到按照顺序发出sql语句,可以先flush下。

你可能感兴趣的:(Hibernate)