`
iamlotus
  • 浏览: 108514 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

如何自动备份删除的对象(1)

阅读更多

   应用和Framework最大的不同在于写Framework都是你在提要求,应用中则有那些让你猛然一惊的需求,即所谓“业务特点”,你还真都得去满足。比如下面这个:

       对于系统里的重要对象,要能够看删除记录,知道是谁删的,删了什么。

      设系统中有一个Order对象

class Order {
    long            oid;
    String          orderNo;
    List<OrderItem> items;
    User            creator;
    Date            createTime;
    // ... getter, setter

}

       这个需求是说,为避免纠纷,对于被删除的Order,要能够根据orderNo,删除时间等作查询,并能够查看Order被删除时的样子。一般这种功能不会开放给用户,但后台管理总会有这样的需要。

 

     好了,问题清楚了。那么我们该怎么作呢?

     第一种方法最直接。假设Order和OrderItem分别存在 m_order表和m_order_item中,这种方法需要建立b_order和b_order_item表,并为需要删除的Order和OrderItem各创建一个子类

class DeletedItem extends Item{
};

class DeletedOrder extends Order{          
         private List<DeletedItem> items;
         @Override
          public List<Item> getItems{
                  return this.items;
          }           
}
 

     这样, Service在删除一个Order对象时,只需要new 并register 一个DeletedOrder就好了

 

void deleteOrder(Order order){
        DeletedOrder delOrder=new DeletedOrder();
        delOrder=getBaseDto.register(delOrder);
        delOrder.setOrderNo(order.getOrderNo());
        // ... deep clone order to delOrder;        
    }
 

   这种方案,对于DeletedOrder采用了单独一张表,查询也没有问题。

   那么,这个方案的可行性怎么样呢?不怎么样!

  1)DeletedOrder映射为一张物理表的方案,意味着对N个要查询删除的对象,系统中要建立N张表,这有很大的维护开销。如果以后Order结构变化,则m_order和b_order表都要按照相同的schema更改,开销更大。为这么点破事就搞出这么多表来,这种设计太重。

  2)假设系统中有N种要查询删除的对象,这个方法需要service写N段分散的代码。想要知道一个对象是否会被备份,只有一个个查看引用,这种设计不符合开闭原则。

   针对以上两个缺点,一个最终的方案应该包括以下两个特点

   1)最好数据库中一张表能搞定

   2)对于Service层透明,维护时要阅读和修改的代码尽量少,责任明确。

 

 

 

0
0
分享到:
评论

相关推荐

    sql2008自动备份数据库和定期删除数据库备份

    SQLServer 2008 自动备份数据库和定期删除数据库备份 SQLServer 2008 通过创建维护计划可以实现自动备份数据库和定期删除备份。为了实现这个功能,必须开启 SQLServer 的 SQLServer Agent 服务,因为这个服务默认是...

    在SQL Server 2005数据库中实现自动备份自动删除备份文件

    在SQL Server 2005中,为了确保数据的安全性和可恢复性,自动备份和自动删除备份文件是非常关键的操作。以下是如何在SQL Server 2005中实现这两个功能的详细步骤: 一、创建自动备份 1. **打开SQL Server ...

    sql自动备份(如何自动备份)

    在SQL Server中,数据库的自动备份是确保数据安全和防止数据丢失的重要措施。本文将详细介绍如何设置SQL Server的自动定时备份功能,以便在无需人工干预的情况下定期执行备份任务。 首先,确保您的计算机已经安装了...

    windows下oracle11g数据泵自动备份脚本

    windows下oracle11g数据泵自动备份脚本含删除过期备份和使用方法 1、先建备份用的路径对象:(注:此处认为用来做备份的用户backupuser已经建好了,且已经有连接数据库的相应权限) sqlplus / as sysdba CREATE OR ...

    pb 12.5编写自动备份工具

    PB 12.5 编写的自动备份工具是一款利用PowerBuilder 12.5开发的应用程序,主要用于自动化SQL Server数据库的备份过程。该工具能够按照预设的时间计划执行数据库备份,并将生成的备份文件安全地复制到网络共享位置,...

    自动备份和按日期删除程序

    在IT领域,自动备份和按日期删除程序是保持数据安全和系统整洁的重要工具。VBScript(Visual Basic Script)是一种轻量级的脚本语言,常用于Windows系统的自动化任务,如批处理、网页交互等。本程序就是利用VBScript...

    oracle自动备份工具

    RMAN还能进行验证备份、删除旧备份和执行自动备份策略。 2. **自动备份策略**:在Oracle中,可以通过RMAN配置自动备份策略,例如设置每天或每周的特定时间执行备份,以及指定备份存储位置。这可以通过RMAN的`RUN`块...

    oracle数据库自动备份

    "Oracle数据库自动备份"指的是利用Oracle提供的工具和策略,设定定期自动执行数据库备份,以确保数据的安全性。 Oracle数据库提供了多种备份方式,包括物理备份和逻辑备份。物理备份主要是通过RMAN(恢复管理器)...

    sql2008自动备份

    本篇文章将深入探讨如何在SQL Server 2008中设置自动备份,这对于数据库管理员以及对数据库操作有一定了解的初学者来说,是一项基础但关键的操作。 首先,我们从【描述】中了解到,SQL Server Management Studio...

    oracle自动备份脚本的

    在IT行业中,数据库的备份是至关重要的,尤其是对于企业级应用来说,Oracle数据库的自动备份是确保数据安全的重要环节。本文将围绕“Oracle自动备份脚本”这一主题,详细讲解如何利用脚本来实现Oracle数据库的定时...

    使用PB9做的sqlserver数据库的自动备份软件

    1. **自动备份**:软件可以设置定期执行备份任务,无需人工干预,确保数据库的安全性和可靠性。 2. **批量备份**:如果数据库集群较大,软件能够处理多个数据库的备份工作,提高效率。 3. **文件压缩**:备份完成后...

    Oracle数据库对象管理及备份与恢复.pdf

    Oracle数据库是业界广泛使用的大型关系型数据库系统,其对象管理及备份与恢复机制对于数据库管理员来说至关重要。本文将详细介绍Oracle数据库的对象管理、数据类型、触发器、索引和分区策略,以及备份与恢复的相关...

    excel对象清理工具/vba清理Excel对象

    excel多余对象清理工具/...删除多余对象前自动备份文件 目前删除几万个还是OK的(测试3-4万个对象处理需要2分钟左右),几十万个就另外手工处理吧,直接卡死。 还有很多不足,还有很多需要改善的地方,请大佬指点指点~

    java自动备份

    Java自动备份系统是一种高效、可靠的解决方案,用于在服务器上实现资源文件的自动化上传、下载以及备份功能。这个系统的核心在于利用Java编程语言的强大能力和灵活性,结合相关库和框架,实现文件管理的自动化流程,...

    PB实现sql数据库自动备份

    本文将详细阐述如何使用PowerBuilder(PB)实现SQL数据库的自动备份,以及涉及的相关知识点,包括数据恢复、特殊数据处理和数据上传下载。 一、SQL数据库自动备份 SQL数据库自动备份是为了防止数据丢失或系统故障...

    SQL2008设置自动备份与删除.doc

    ### SQL Server 2008 自动备份与删除策略详解 #### 一、背景与目的 随着业务数据量的增长及重要性的提升,确保数据库的安全性和稳定性成为IT部门的一项重要职责。在SQL Server 2008中,为了保护数据安全并提供有效...

    文件夹自动备份工具+vb源代码

    本文将围绕一款名为“文件夹自动备份工具+vb源代码”的工具进行讨论,它不仅提供了可执行的备份程序FolderBackup.exe,还附带了详细的VB源代码,让使用者能够根据自己的需求调整并学习到如何开发类似的工具。...

    Oracle数据库定时自动备份批处理代码(Windows)

    Oracle数据库定时自动备份对于保障数据安全至关重要,尤其是在Windows环境下,通过批处理脚本可以实现这一功能。以下是一个详细的Oracle数据库定时自动备份的步骤和相关知识点: 1. **批处理脚本**: - `...

    wxh PB数据库自动备份软件

    PB数据库自动备份软件是一款专为PowerBuilder(简称PB)数据库设计的工具,旨在简化数据库的备份过程,确保数据的安全性和完整性。PowerBuilder是一款强大的数据库应用开发环境,它使用DataWindow控件来处理数据库...

Global site tag (gtag.js) - Google Analytics