JPA和一级缓存,有什么意义?

EntityManager维护检索到的对象的一级缓存,但是,如果您希望具有线程安全的应用程序,则需要为每个事务创建并关闭EntityManager。

那么,如果为每个事务创建并关闭了那些实体,那么1级缓存的意义何在?或者,如果您在单线程中工作,那么entityManager缓存可用吗?

埃德温·达洛佐

一级缓存可用于其他目的。基本上,这是JPA放置从数据库中检索到的实体的上下文。

性能

因此,为了说明这一点,它避免了在事务处理期间已被检索为某种形式的高速缓存的情况下,不必检索记录并提高性能。另外,考虑延迟加载。您如何在没有缓存的情况下实现它来记录已经延迟加载的实体?

循环关系

此缓存目的对于实现适当的ORM框架至关重要。在面向对象的语言中,对象图通常具有循环关系。例如,具有雇员对象的部门,而那些雇员对象属于部门。

没有上下文(也称为工作单元),将很难跟踪您已进行ORMed的记录,最终将创建新的对象,在这种情况下,您甚至可能陷入无限循环。

跟踪更改:提交和回滚

另外,此上下文还跟踪您对对象所做的更改,以便可以在事务结束时在以后的某个时间持久保存或回滚它们。没有这样的缓存,您将被迫在更改发生时立即将更改刷新到数据库,然后便无法回滚,也无法优化将其刷新到存储的最佳时机。

对象身份

对象标识在ORM框架中也至关重要。也就是说,如果您检索员工ID 123,那么如果在某个时候需要该员工,则应该始终获取同一对象,而不是包含相同数据的新对象。

这种类型的缓存不能由多个线程共享,如果这样的话,则会损害性能并迫使每个人付出代价,即使使用单线程解决方案也可以。除此以外,您最终会得到更加复杂的解决方案,就像用火箭筒杀死苍蝇一样。

这就是为什么如果您需要的是共享缓存,那么您实际上需要一个二级缓存的原因,并且还有一些实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JPA和一级缓存,有什么意义?

来自分类Dev

休眠一级缓存与查询缓存

来自分类Dev

休眠一级缓存与查询缓存

来自分类Dev

休眠一级缓存-是否同步?

来自分类Dev

一级 SVC 和二级 SVC 中提到的“100 个特征”是什么?

来自分类Dev

使用fts(3)函数重命名文件和目录。只有第一级被改变

来自分类Dev

为什么在具有一级索引的MultiIndex列的熊猫DataFrame中,行为会有所不同?

来自分类Dev

Itemscope和itemprop在同一级别

来自分类Dev

Typescript:在同一级别重用for ..和for ..

来自分类Dev

Itemscope和itemprop在同一级别

来自分类Dev

树命令列出一级所有文件

来自分类Dev

ReactJS-向一级子级和嵌套子级继承道具的正确方法

来自分类Dev

.htaccess重定向,该查询没有根目录的查询字符串和第一级

来自分类Dev

在一级缓存中获得Haswell的峰值带宽:仅获得62%

来自分类Dev

Hibernate 的一级缓存不适用于布尔类型?

来自分类Dev

删除一级块

来自分类Dev

RewriteRule提升一级

来自分类Dev

删除一级块

来自分类Dev

$(pwd) - 上一级

来自分类Dev

具有字符串路径的分层数据-查询节点,获取其节点的所有父级和第一级

来自分类Dev

为什么缓存交换有意义?

来自分类Dev

有没有什么命令可以在shell中下一级目录?(当只有一个子目录时)

来自分类Dev

Xpath选择一级子级

来自分类Dev

QT5:布局的父级有什么意义?

来自分类Dev

Rolify和CanCan有什么意义?

来自分类Dev

Debian和Ubuntu有什么意义?

来自分类Dev

使用第一级和第二级重试与 Rebus 测试 Handle 和 Handle<IFailed> 方法

来自分类Dev

包含自身的列表-为什么重置其元素会影响第一级?

来自分类Dev

为什么std :: vector :: iterator :: operator->仅向下钻取一级?

Related 相关文章

  1. 1

    JPA和一级缓存,有什么意义?

  2. 2

    休眠一级缓存与查询缓存

  3. 3

    休眠一级缓存与查询缓存

  4. 4

    休眠一级缓存-是否同步?

  5. 5

    一级 SVC 和二级 SVC 中提到的“100 个特征”是什么?

  6. 6

    使用fts(3)函数重命名文件和目录。只有第一级被改变

  7. 7

    为什么在具有一级索引的MultiIndex列的熊猫DataFrame中,行为会有所不同?

  8. 8

    Itemscope和itemprop在同一级别

  9. 9

    Typescript:在同一级别重用for ..和for ..

  10. 10

    Itemscope和itemprop在同一级别

  11. 11

    树命令列出一级所有文件

  12. 12

    ReactJS-向一级子级和嵌套子级继承道具的正确方法

  13. 13

    .htaccess重定向,该查询没有根目录的查询字符串和第一级

  14. 14

    在一级缓存中获得Haswell的峰值带宽:仅获得62%

  15. 15

    Hibernate 的一级缓存不适用于布尔类型?

  16. 16

    删除一级块

  17. 17

    RewriteRule提升一级

  18. 18

    删除一级块

  19. 19

    $(pwd) - 上一级

  20. 20

    具有字符串路径的分层数据-查询节点,获取其节点的所有父级和第一级

  21. 21

    为什么缓存交换有意义?

  22. 22

    有没有什么命令可以在shell中下一级目录?(当只有一个子目录时)

  23. 23

    Xpath选择一级子级

  24. 24

    QT5:布局的父级有什么意义?

  25. 25

    Rolify和CanCan有什么意义?

  26. 26

    Debian和Ubuntu有什么意义?

  27. 27

    使用第一级和第二级重试与 Rebus 测试 Handle 和 Handle<IFailed> 方法

  28. 28

    包含自身的列表-为什么重置其元素会影响第一级?

  29. 29

    为什么std :: vector :: iterator :: operator->仅向下钻取一级?

热门标签

归档