美文网首页
创易-数据层设计

创易-数据层设计

作者: starteasy | 来源:发表于2016-09-22 22:24 被阅读218次

           对于数据层大家都不陌生,关注过spring的同学应该也一定听说过spring data。我们来看看官方对spring data的介绍:

    Spring Data 作为SpringSource的其中一个父项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。

    Spring Data架构图

          从上图可以看出Spring Data确实是一个很好的接口集,对 数据访问这一特定领域有一个非常高的抽象。但是其内置的CrudRepository、PagingAndSortingRepository拥有的方法有限,在前面的文章也有提及,我们思考再三,希望保证Spring Data的NoSQL访问能力,也不失更多数据表操作方式,所以做了自己的一层扩展[基于Mybatis](即我们自己的DAO,类似于 spring-data-jpa)。

            【最终我们希望数据层(sql编写)工作尽量的少】

           通过我们对数据访问的场景进行分析和归纳,我们加入了几个特性:

            selector,即需要查询的字段,很多情况下,我们并不需要查询出所有字段,而对于数据库(RDB)来讲查询出所有字段对性能也有影响;

          condition(Criteria),条件查询,根据特定字段的特定值以不同的组合方式进行数据过滤;

           sorter,进行相关的字段排序;

           native sql 片段,支持完整sql,复杂的查询类sql,复杂的排序类sql;

          pagination,分页匹配实现方式,支持上面特性的分页;

           另一个很重要的方面是 DAO层的缓存设计,参考hibernate的cache实现。但是因为业务的复杂性,单一对象以主键为key的缓存,只能解决很小的一部分问题,我们还需要从业务层面出发实现更复杂的缓存策略支持。

          最终我们支持的DAO接口方法列表如下图:

    CRUD方法明细

          大家看过创易技术选型 文章的话,知道我们整体基于JHipster,其实数据层就是spring boot集成Mybatis,具体的技术细节,后续文章会有详细介绍。

    事务问题,

    相关文章

      网友评论

          本文标题:创易-数据层设计

          本文链接:https://www.haomeiwen.com/subject/pfazettx.html