数据访问层概要设计

来源:互联网 发布:软件系统安全 编辑:程序博客网 时间:2024/05/18 02:48

  • 数据访问层
    • 功能
    • 目标
    • 接口
      • DataService
      • NoteDaoT
    • 调用时序图
    • 示例
      • 单条数据结构
      • 列表数据结构
      • 树形数据结构

数据访问层

功能

用于存储业务数据

目标

  • 提供缓存、数据库等存储方式
  • 提供数据获取策略
  • 数据获取方式对外透明
  • 提供局部数据增,删,改,查
  • 提供对树形结构数据的存储支持

接口

DataService

数据访问层的门面类,提供DAO(Data Access Object)支持数据读、取

  • 方法
    • NoteDao<T> getNoteDao(String name, Class<T> className)
    • NoteDao<T> getNoteDao(String name, Class<T> className, NoteFilter<T> filter)

NoteDao<T>

数据存储对象,提供增、删、改、查等功能,封装数据存取策略

  • 方法

    • T query()
      查询指定类型数据

    • T query(NoteFilter<T> filter)
      查询指定类型数据

      • filter:从查询列表中通过过滤条件过滤
    • List<T> query()
      查询指定类型数据的列表

    • List<T> query(NoteFilter<T> filter)
      查询指定类型数据的列表

      • filter:从查询列表中通过过滤条件过滤
    • K query(String name, Class<K> className, NoteFilter<K> filter)
      查询子类型(成员变量类型)数据

      • name:数据类型名称
      • className:数据类型对象
      • filter:从查询列表中通过过滤条件过滤
    • List<K> query(String name, Class<K> className, NoteFilter<K> filter)
      查询子类型(成员变量类型)数据

      • name:数据类型名称
        • className:数据类型对象
        • filter:从查询列表中通过过滤条件过滤
    • void insert(T data)
      添加指定类型数据

    • void insert(String name, Class<K> className, K data)
      添加子类型(成员变量类型)数据

      • name:数据类型名称
      • className:数据类型对象
      • data:要添加的数据
    • void update(T data)
      更新指定类型数据

      • data:要更新的数据
    • void update(String name, Class<K> className, K data)

      • name:数据类型名称
        • className:数据类型对象
        • data:要更新的数据
    • void delete()
      删除数据

    • void delete(NoteFilter<T> filter)
      删除数据

    • void delete(String name, Class<K> className)
      删除子类型(成员变量类型)数据

      • name:数据类型名称
      • className:数据类型对象
    • void delete(String name, Class<K> className, NoteFilter<K> filter)
      删除子类型(成员变量类型)数据

      • name:数据类型名称
      • className:数据类型对象
      • filter:从查询列表中通过过滤条件过滤

调用时序图

Created with Raphaël 2.1.0业务逻辑层业务逻辑层DataServiceDataServiceNoteDaoNoteDao创建DataServicegetNoteDao()创建NoteDao返回NoteDao返回NoteDaoquery或insert或update或delete返回操作结果

示例

单条数据结构

DataService dataService = new DataService();NoteDao<User> userDao = dataService.getNoteDao("xx.local.user", User.class);User user = new User("xxxxx", "123456");//增加userDao.insert(user);//更新user.setPassword("454545");userDao.update(user);//查询User user1 = userDao.query();//删除userDao.delete();

列表数据结构

DataService dataService = new DataService();NoteDao<Record> recordDao= dataService.getNoteDao("xxx.storage.record", Record.class);//增加recordDao.insert(new Record(1,"1.mp4", "20160927150500", "20160927152000"));//查询final Record record = recordDao.query(new NoteFilter<Record>(){    boolean filter(Record curRecord)    {        if (curRecord.getId() == 1) {            return true;        }        return false;    }});//更新record.setFilePath("/xxx/1.mp4");recordDao.update(new NoteFilter<Record>() {    boolean filter(Record curRecord)    {        if (curRecord.getId() == record.getId()) {            return true;        }        return false;    }});//删除recordDao.delete(new NoteFilter<Record>() {    boolean filter(Record curRecord)    {        if (curRecord.getId() == record.getId()) {            return true;        }        return false;    }});

树形数据结构

DataService dataService = new DataService();//局部进行查询、增加、修改,删除NoteDao<Device> deviceDao= dataService.getNoteDao("xxx.device.Device",    Device.class,     new NoteFilter<Device> () {    boolean filter(Device device){        if (device.getSnCode().equal("1NIDS12323OIFD")) {            return true;        }        return false;    }});//查询final Channel channel = deviceDao.query("xxx.device.Channel",     Channel.class,     new NoteFilter<Channel>(){    boolean filter(Channel curChannel){        if (curChannel.getIndex() == 0) {            return true;        }        return false;    }});//增加deviceDao.insert("xxx.device.Channel",     Channel.class, new Channel(0, "camera01"));channel.setName("camera02");deviceDao.update("xxx.device.Channel",     Channel.class,     new NoteFilter<Channel>(){    boolean filter(Channel curChannel){        if (curChannel.getIndex() == channel.getIndex()) {            return true;        }        return false;    }});deviceDao.delete("xx.device.Channel",     Channel.class,     new NoteFilter<Channel>(){    boolean filter(Channel curChannel){        if (curChannel.getIndex() == channel.getIndex()) {            return true;        }        return false;    }});
0 0
原创粉丝点击