任何具有ADF业务组件基础知识的ADF开发人员都应该熟悉下图:

它代表运行时ADF业务组件的核心构建块。 有一个包含视图对象实例的根应用程序模块实例。 视图对象实例可能由存储在实体集合或换句话说就是实体缓存中实体对象备份 根应用程序模块可能还包含嵌套的应用程序模块,而嵌套的应用程序模块又包含它们自己的视图对象实例。 单个根AM中的所有视图对象实例和嵌套应用程序模块共享同一实体缓存,这一点非常重要。 问题是如何?

上图代表一个非常简单的情况。 只有一个用户会话,并且假定应用程序中只有一个根应用程序模块。 但是,ADF BC假定每个用户会话都有其自己的实体缓存。 那么,是什么将我的应用程序模块链接到我的并且只有我的实体缓存?

这是DB Transaction对象出现的地方:

它是一个内部框架对象,实际上包含实体缓存,并将其提供给在此DB Transaction对象中注册的所有应用程序模块。 此外 数据库事务对象包含一个数据库连接 ,它提供所有与jdbc相关的服务,例如创建和执行可调用语句。 许多开发人员认为,实际的应用程序模块负责包含实体缓存,保持数据库连接以及与数据库进行交互。 这不是真的。 一个应用程序模块只是附加到使用实体缓存的DB事务对象上,并从中获取数据库连接。 “附加”一词意味着可能有许多根应用程序模块引用同一数据库事务对象。

在那种情况下,该交易称为“共享” 。 连接到它的每个应用程序模块都使用相同的数据库连接和相同的实体缓存。 有一个普遍的神话,一个根应用程序模块的任何实例总是需要一个专用的数据库连接。 显然,并非总是如此。

此功能基于jbo.shared.txn AM属性。 这意味着具有此属性的相同值的所有根应用程序模块将共享相同的数据库事务对象,并因此共享相同的数据库连接和实体缓存。 共享应用程序模块通常使用“共享事务”功能,因此,通过为其jbo.shared.txn属性设置相同的字符串值,我们可以强制它们共享相同的数据库连接。

而已!

翻译自: https://www.javacodegeeks.com/2016/05/application-modules-entity-cache.html

应用程序模块和实体缓存相关推荐

  1. 应用程序缓存_应用程序模块和实体缓存

    应用程序缓存 任何具有ADF业务组件基础知识的ADF开发人员都应该熟悉下图: 它代表运行时ADF业务组件的核心构建块. 有一个包含视图对象实例的根应用程序模块实例. 视图对象实例可能由存储在实体集合或 ...

  2. [NewLife.XCode]实体列表缓存(最土的方法实现百万级性能)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  3. AccEAP架构介绍(1)---实体的设计

    刚刚看到阿木的 与DotNet数据对象结合的自定义数据对象设计 (一)  ,讨论数据对象的设计思想,我就AccEAP中本人的实体设计思路参与讨论. 几个开源中, 阿木也提到 IBatisNet.NHi ...

  4. java memcached 存储对象_java – 从Memcache中获取低级别数据存储区实体对象时的慢速反序列化...

    事实证明,检索存储内存缓存的低级数据存储实体非常缓慢.由于objectify将实体缓存为低级数据存储区实体类型,因此当使用objectify从memcache中获取许多实体时,这会导致性能不佳. 真正 ...

  5. Hibernate 缓存

    我这里使用的是Hibernate5.2.0版本 Hibernate缓存分为一级缓存(有的也叫Session缓存)和二级缓存. 一级缓存(Session) 一级缓存的生命周期和session的生命周期一 ...

  6. [NewLife.XCode]实体工厂(拦截处理实体操作)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  7. [NewLife.XCode]数据层缓存(网站性能翻10倍)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  8. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  9. Hibernate如何存储二级缓存条目

    介绍 使用数据库访问抽象层的好处是可以透明地实现缓存,而不会泄漏到业务逻辑代码中 . Hibernate Persistence Context充当事务后写式高速缓存 ,将实体状态转换转换为DML语句 ...

最新文章

  1. Linux11-RPM软件包和YUM源
  2. Token ,Cookie、Session傻傻分不清楚?
  3. codeforce 609A - USB Flash Drives
  4. 这是我第一次使用代码创建出一个窗口【python 游戏实战 01】
  5. ReviewForJob——最小生成树(prim + kruskal)源码实现和分析
  6. usb转ttl模块与matlab,图文详解USB转TTL设备与电路板的连接
  7. 任正非:不要做一个完人
  8. 交换机短路_交换机日常怎么运行维护?一文告诉你
  9. 统计学基础Statistics for the Behavioral Sciences 之 Sample Variance as an Unbiased Statistic
  10. 蜂鸣器驱动电路 自主开发设计
  11. 白话Android音频系统原理
  12. 小白基础知识必备|| 整型常量与进制间的转换
  13. 新手做搭建独立站需要准备什么
  14. matlab中clc什么意思,MATLAB中clc是什么意思
  15. Linux基础命令,个人笔记备份
  16. CVE(2017-15715、2021-41773、2021-40438)漏洞复现
  17. 页面倒计时按钮的两种实现方式
  18. 微信小程序,解析回车符
  19. ifstream fin
  20. 【九度】题目1375:陈博的完美主义(25分)

热门文章

  1. 消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型
  2. Java中创建String的两道面试题及详解
  3. 使用Java 8 Stream像操作SQL一样处理数据(上)
  4. Tomcat配置虚拟内存
  5. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——EmpDao层代码
  6. 表单中去掉重置和提交按钮和搜索框
  7. 开发环境 Minio 添加桶的操作流程-页面操作
  8. 以太坊地址和公钥_以太坊交易签名解析源码解读
  9. 转】Eclipse编辑Spring配置文件xml时自动提示类class包名
  10. read cache_通过READ-BEHIND CACHE控制您的慢速生产者