Skip to content
He, Jiehui edited this page Sep 2, 2016 · 19 revisions

Dal定位

Dal的定位是数据库访问层。是以数据访问类(dao)的形式出现。Dal包括生成的dao代码和dal client底层api。Dal底层使用标准的数据库访问协议访问实际的数据库。

dal本身不是数据库,也不实现数据库协议。Dal依赖具体的数据库实现数据访问的工作。

Dal主要功能是ORM,sharding等。Dal支持简单的基于单库的事务,但dal不支持分布式事务

Dal也不支持数据库同步工作。数据库同步请使用数据库自带或第三方工具

注意

Dal的推荐用法是在公司的内网安装一个code gen。code gen里面配置开发环境的数据库。通过code gen生成各种DAO。用户直接使用DAO来完成相应的工作。

Dal不推荐通过自己调用底层API的方式来完成数据库操作,希望大家利用code gen完成工作。这样做的好处是一旦数据库schema发生变更,仅仅需要重新生成代码即可。自己如果手写代码,一旦重新生成有可能会冲掉原来手工的改动。

Dal应用的层次结构

典型的应用程序分为如下几层

  1. Domain Logic Layer
  2. Domain Database Access Layer
  3. DAL Client

Domain Logic Layer

用户的应用逻辑层。通过调用下层的Domain Data Access Layer完成所有跟数据库相关的操作。Domain Logic Layer相关的代码由用户维护。

Domain Database Access Layer

一般是指通过DAL code generator生成的DAO。目前支持基于单表/视图/存储过程/自由查询/手工SQL的DAO生成。

在无法满足要求的特殊情况下可以手写DAO。例如存在大量的通用操作,没必要为每个表生成单独的DAO。可以生成一个通用的DAO来满足其要求。以避免生成大量雷同的DAO类。降低维护成本和出错风险

该层code由用户的DAL team维护。用户的DAL Team负责使用Code Generator生成DAO,满足特定用户的数据库访问需求。

一般来说如果team的开发人员比较多,建议成立相对独立的DAL Team;如果人数比较少,可以明确责任人,成立虚拟的Dal Team。

DAL Client

为实现通用的数据库访问层而提供的底层API和相关的辅助类。该API为其上的Domain Database Access Layer提供支持。该层包含所有数据库操作最底层的API和针对常用操作提供的的DAO帮助类。

DAO帮助类目前包含支持单表和自由查询的DAO。同时由Code Generator生成的单表/查询相关的DAO会将相关的操作交给这些DAO帮助类去处理。这样做可以避免在Domain Database Access Layer生成大量的重复代码,并且保证质量。

DAL Client由DAL Core Team维护。DAL Core Team负责维护Code generator,DAL Helper DAO,DAL Core API等cross team的工具。

注意,DAL Core Team不同于用户自己的Dal Team。