栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Activiti 之 DataManager & EntityManager

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Activiti 之 DataManager & EntityManager

by yan 20211223

阅读了Activiti 相关源码,记录下对DataManager & EntityManager的理解。

DataManager

是一层相对底层的抽象,主要负责数据的持久化操作。
通过DbSqlSession实现数据库的CRUD,DbSqlSession 是Activiti里对底层session的一个封装。默认使用了Mybatis的SqlSession操作数据库。
Activiti 封装了几种session。如图

通过EntityCache实现数据的缓存操作。EntityCache是Activiti封装一个缓存机制。存储结构是一个Map, Map>,一个二层map使用类作为key,每个类对应有多个对象,类有继续关系,如果找不到父类的key,就找子类的key。如下代码

public class EntityCacheImpl implements EntityCache {

  protected Map, Map> cachedObjects = new HashMap, Map>();

  @Override
  public CachedEntity put(Entity entity, boolean storeState) {
    Map classCache = cachedObjects.get(entity.getClass());
    if (classCache == null) {
      classCache = new HashMap();
      cachedObjects.put(entity.getClass(), classCache);
    }
    CachedEntity cachedObject = new CachedEntity(entity, storeState);
    classCache.put(entity.getId(), cachedObject);
    return cachedObject;
  }
    @Override
  @SuppressWarnings("unchecked")
  public  T findInCache(Class entityClass, String id) {
    CachedEntity cachedObject = null;
    Map classCache = cachedObjects.get(entityClass);

    if (classCache == null) {
      classCache = findClassCacheByCheckingSubclasses(entityClass);
    }

    if (classCache != null) {
      cachedObject = classCache.get(id);
    }

    if (cachedObject != null) {
      return (T) cachedObject.getEntity();
    }

    return null;
  }

 protected Map findClassCacheByCheckingSubclasses(Class entityClass) {
    for (Class clazz : cachedObjects.keySet()) {
      if (entityClass.isAssignableFrom(clazz)) {
        return cachedObjects.get(clazz);
      }
    }
....
}
EntityManager

是相对DataManager 上层的一层封装。主要负责操作Entity实体的业务。通过调用DataManager实现数据持久化。

Entity

实体的承载。这块实体又做了很多接口和抽象。EntityManager和DataManager都依赖于它。

最后上总图:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678111.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号