Vla*_*ejs 5 java orm caching mybatis
我有2个映射器mapperA和mapperB。
mapperA的结果映射A仅包含结果元素(简单属性),并缓存在自己的名称空间中。
mapperB具有结果映射B,该结果映射B包含与A的关联(选择语句findById),并且也缓存在自己的名称空间中。
问题是:
mapperB.findById (加载B和关联的A-都被缓存)mapperA.findById (没有选择执行的A被缓存)mapperA.update (更新一些A-刷新缓存A)mapperA.findById (已执行选择-已加载的A已更新)mapperB.findById-这是问题-不执行选择,因为B被缓存。但是它与A实例一起缓存。该实例不反映更新。应该执行选择/缓存查找以加载当前的A实例。我的问题是:
当两个结果都被缓存时,如何使关联正常工作。
笔记:
我知道我可以强制A和B映射器使用单个缓存名称空间,因此当A更新时,它将刷新所有缓存的A和B查询。但是请考虑我有10个实例-这些实例每隔几分钟就会更新一次。还有100万个B实例-这些实例每天更新一次。每次更新A时刷新所有B都是没有效率的。
小智 0
您应该使用相同命名空间缓存。
在映射器A中:
< mapper namespace="mapperA">
< cache/>
Run Code Online (Sandbox Code Playgroud)
...
在映射器B中:
< mapper namespace="mapperB">
< cache-ref namespace="mapperA"/>
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |