Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate缓存更新机制_Java_Hibernate_Caching_Jpa_Orm - Fatal编程技术网

Java Hibernate缓存更新机制

Java Hibernate缓存更新机制,java,hibernate,caching,jpa,orm,Java,Hibernate,Caching,Jpa,Orm,我想知道有关hibernate缓存的信息:- 当我们在缓存中更新对象时,它会在数据库中自动更新。如果没有,它将如何更新 如果数据库被更新,它会在缓存中立即更新吗?如果不会,那么它将如何更新 读一读这篇文章: 基本上Hibernate透明地管理这些缓存。因此,如果您使用的是SessionFactory,您不必担心更新的内容和存储位置,Hibernate会为您管理这些内容。缓存(在两个级别)的存在只是为了尝试减少Hibernate必须进行的数据库调用的数量。您不应该试图直接控制一级缓存,如果您正在对

我想知道有关hibernate缓存的信息:-

  • 当我们在缓存中更新对象时,它会在数据库中自动更新。如果没有,它将如何更新

  • 如果数据库被更新,它会在缓存中立即更新吗?如果不会,那么它将如何更新


  • 读一读这篇文章:

    基本上Hibernate透明地管理这些缓存。因此,如果您使用的是SessionFactory,您不必担心更新的内容和存储位置,Hibernate会为您管理这些内容。缓存(在两个级别)的存在只是为了尝试减少Hibernate必须进行的数据库调用的数量。您不应该试图直接控制一级缓存,如果您正在对系统进行一些认真的优化,您应该只尝试显式地配置二级缓存

    但要回答你的问题:

  • 就我所知,您不会更新缓存的实例。如果您正在执行更新,Hibernate将更新数据库并将新对象状态持久化到一级缓存

  • 一级缓存是,二级缓存否,您可以将二级缓存配置为定期使持久化数据过期,但正如所述,缓存不知道对持久化存储所做的更改


  • 阅读文档,看看这是否进一步回答了您的问题。

    Hibernate有一个一级缓存和一个可选的二级缓存。第一级缓存是必需的,它存储要与数据库同步的连接实体

    因此,在刷新时,第一级缓存和当前db事务是同步的,而在提交时,更改也会传播到其他连接

    二级缓存有多种风格:

  • 只读(从不更新)
  • 非严格读写(没有缓存锁,因此当两个相互竞争的事务修改同一条目时,不清楚谁赢)
  • 读写:类似于读提交的数据库隔离级别
  • 事务性:缓存将登记在当前JTA事务中
  • 一些实现还群集化,并具有其他同步选项

    同步模式越安全,性能越差,因此请确保为应用程序用例选择正确的同步模式