很显然,对RoomDemo进行级联saveorupdate时,由于RoomDemo对象的id为assigned,hibernate是无法判断Room对象是新建还是已持久化的的,必须到缓存或数据库去查找判断。ses.save(user1);
ses.save(user2);
实际上找了2次RoomDemo,一次在数据库,一次在一级缓存

解决方案 »

  1.   

    非常感谢,还有一个小小的问题
    hibernate 在执行 ses.save(user1); 是否由于无法判断 roomdemo 的性质,首先到数据库里面查找 roomdemo ,发现数据库没有,然后就对 roomdemo 执行 insert,insert 完成以后把 roomdemo 同时放到缓存
    执行 ses.save(user2); 时,发现缓存已经有了,说明是数据库取出来得,所以已经是持久化的,所以不再次执行查询了,是这样么?
    是不是只有从数据库查询过去出来的数据会自动放到缓存中呢?
    谢谢
      

  2.   

    确实如此(因此还会在查询大量数据时会引发outofmemory错误)