ORM工具二级缓存是否会引发数据不同步?

我们使用Hibernate等ORM工具的时候,经常会使用二级缓存,来提高查询效率,减轻数据库的负荷.请问使用二级缓存的话,会不会造成数据不同步?就是数据库的数据变了,但是查询的还是旧数据.还有就是造成数据库不能及时更新.如果应用服务器崩溃,是否会造成缓存中的数据因没有提交到数据库而丢失?
如果会发生这种情况,请问应如何避免?

当然会,这需要研究Hibernate相关设置,例如detach或merget等使用。

能说的具体一点吗?最好说些要注意的地方和要注意的方法。比如在增删改的时候要注意什么?缓存多久刷新比较好?如何防止应用服务器崩溃的时候,缓存里的数据丢失?

说实话,Hibernate3本身不透明,所以,你无法直接操作缓存,只能通过Hibernate3自己定义的一些方法来实现,具体可参考Hibernate3这些方法说明,总得思路就是:本来缺省情况下,缓存和数据库是同步的,现在通过这些方法可以不同步了。当然你可以获得缓存的大小等一些信息。

不过,我个人不喜欢这样隔着靴子绕痒痒,所以,没有研究太深入,我个人实践都是使用JdonFramework自己的缓存。