Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
e49c06d4
F
Flowable Engine
项目概览
开发团队
/
Flowable Engine
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Flowable Engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e49c06d4
编写于
8月 25, 2015
作者:
J
Joram Barrez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Enhancing getList() to use cached objects without needing to create an extra list internally.
上级
9d0c8a27
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
27 addition
and
10 deletion
+27
-10
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
...c/main/java/org/activiti/engine/impl/db/DbSqlSession.java
+8
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java
...engine/impl/persistence/entity/AbstractEntityManager.java
+19
-10
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
浏览文件 @
e49c06d4
...
...
@@ -527,6 +527,14 @@ public class DbSqlSession implements Session {
classCache
.
remove
(
persistentObjectId
);
}
public
<
T
>
Collection
<
CachedObject
>
findInCacheAsCachedObjects
(
Class
<
T
>
entityClass
)
{
Map
<
String
,
CachedObject
>
classCache
=
cachedObjects
.
get
(
entityClass
);
if
(
classCache
!=
null
)
{
return
classCache
.
values
();
}
return
null
;
}
@SuppressWarnings
(
"unchecked"
)
public
<
T
>
List
<
T
>
findInCache
(
Class
<
T
>
entityClass
)
{
Map
<
String
,
CachedObject
>
classCache
=
cachedObjects
.
get
(
entityClass
);
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java
浏览文件 @
e49c06d4
...
...
@@ -9,6 +9,7 @@ import java.util.List;
import
org.activiti.engine.delegate.event.ActivitiEventType
;
import
org.activiti.engine.delegate.event.impl.ActivitiEventBuilder
;
import
org.activiti.engine.impl.context.Context
;
import
org.activiti.engine.impl.db.DbSqlSession.CachedObject
;
import
org.activiti.engine.impl.db.PersistentObject
;
import
org.activiti.engine.impl.persistence.AbstractManager
;
import
org.activiti.engine.impl.persistence.CachedEntityMatcher
;
...
...
@@ -103,31 +104,39 @@ public class AbstractEntityManager<Entity extends PersistentObject> extends Abst
@SuppressWarnings
(
"unchecked"
)
public
List
<
Entity
>
getList
(
String
dbQueryName
,
Object
parameter
,
CachedEntityMatcher
<
Entity
>
retainEntityCondition
)
{
// Database
// Database
entities
List
<
Entity
>
entitiesFromDb
=
getDbSqlSession
().
selectList
(
dbQueryName
,
parameter
);
HashMap
<
String
,
Entity
>
entityMap
=
new
HashMap
<
String
,
Entity
>(
entitiesFromDb
.
size
());
for
(
Entity
entity
:
entitiesFromDb
)
{
entityMap
.
put
(
entity
.
getId
(),
entity
);
}
// Cache
for
(
Entity
cachedEntity
:
getDbSqlSession
().
findInCache
(
getManagedPersistentObject
()))
{
// Cache entities
Collection
<
CachedObject
>
cachedObjects
=
getDbSqlSession
().
findInCacheAsCachedObjects
(
getManagedPersistentObject
());
if
(
cachedObjects
!=
null
)
{
for
(
CachedObject
cachedObject
:
cachedObjects
)
{
Entity
cachedEntity
=
(
Entity
)
cachedObject
.
getPersistentObject
();
if
(
retainEntityCondition
.
isRetained
(
cachedEntity
))
{
entityMap
.
put
(
cachedEntity
.
getId
(),
cachedEntity
);
// will overwite db version with newer version
}
}
}
if
(
getManagedPersistentObjectSubClasses
()
!=
null
)
{
for
(
Class
<?
extends
Entity
>
entitySubClass
:
getManagedPersistentObjectSubClasses
())
{
for
(
Entity
cachedEntity
:
getDbSqlSession
().
findInCache
(
entitySubClass
))
{
if
(
retainEntityCondition
.
isRetained
(
cachedEntity
))
{
entityMap
.
put
(
cachedEntity
.
getId
(),
cachedEntity
);
Collection
<
CachedObject
>
subclassCachedObjects
=
getDbSqlSession
().
findInCacheAsCachedObjects
(
entitySubClass
);
if
(
subclassCachedObjects
!=
null
)
{
for
(
CachedObject
subclassCachedObject
:
subclassCachedObjects
)
{
Entity
cachedSubclassEntity
=
(
Entity
)
subclassCachedObject
.
getPersistentObject
();
if
(
retainEntityCondition
.
isRetained
(
cachedSubclassEntity
))
{
entityMap
.
put
(
cachedSubclassEntity
.
getId
(),
cachedSubclassEntity
);
// will overwite db version with newer version
}
}
}
}
}
// Remove
any
entries which are already deleted
// Remove entries which are already deleted
Collection
<
Entity
>
result
=
entityMap
.
values
();
if
(
result
.
size
()
>
0
)
{
Iterator
<
Entity
>
resultIterator
=
result
.
iterator
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录