0 0

领域驱动设计中的数据级联更新删除问题20

如下代码:
@Entity
@Table(name = "BizWorkflowEntry")
public class BizWorkflowEntry extends AbstractEntity {
    private BizWorkflowBinding entryBinding;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "CurrentBindingId")
    public BizWorkflowBinding getEntryBinding() {
        return entryBinding;
    }

    public void releaseBinding() {
        entryBinding = null;
    }
。。。
}


BizWorkflowEntry 是聚合根,entryBinding是其中的对象。
我通过repository获取到BizWorkflowEntry 对象后,同时加载entryBinding对象。然后执行releaseBinding操作,这个时候,BizWorkflowEntry 这个对象在内存中的状态已经进行了更新。然后调用更新BizWorkflowEntry 的方法,我希望是能够实现表BizWorkflowEntry中的字段CurrentBindingId为null,同时entryBinding对应的记录被删除掉。类似于如下代码:

BizWorkflowEntry  entry = xxxRepo.get(BizWorkflowEntry.class, entryId);
entry.releaseBinding();
xxxRepo.update(entry );


但是现在的问题是,只能更新BizWorkflowEntry 表,而无法删除对应的BizWorkflowBinding 对象,我不像做如下的操作,因为这明显是很不符合基于聚合根来进行操作的规定。

BizWorkflowEntry  entry = xxxRepo.get(BizWorkflowEntry.class, entryId);
BizWorkflowBinding binding = entry.getEntryBinding();
entry.releaseBinding();
xxxRepo.update(entry );
xxxRepo.delete(binding );



不知道各位在进行DDD设计和开发时,有没有遇到类似的问题,是如何解决的?谢谢!
2010年12月03日 11:00

1个答案 按时间排序 按投票排序

0 0

private Set<BizWorkflowBinding> bindCollection;

但OneToOne用集合感觉挺怪的

2010年12月06日 14:07

相关推荐

    《实现领域驱动设计》中的源码

    《实现领域驱动设计》这本书是领域驱动设计(Domain-Driven Design,简称DDD)领域的经典之作,作者埃里克·埃文斯深入探讨了如何通过软件设计来理解和处理复杂的业务问题。书中提供的源码工程是理解DDD实践的重要...

    pe中删除系统驱动32位

    在计算机领域,操作系统和硬件之间有一个重要的桥梁,那就是驱动程序。驱动程序是操作系统与硬件设备进行通信的特殊软件,使得操作系统能理解并控制硬件设备的工作。本文将详细讲解如何在PE(预安装环境,Pre-...

    2007 Office system 驱动程序:数据连接组件

    微软的2007 Office System驱动程序:数据连接组件(AccessDatabaseEngine.exe)正是为了实现这一目标而设计的工具。这款组件,作为Microsoft Office的一部分,允许用户与其他数据源进行无缝的数据交换,特别是对于...

    R-STUDIO Network_驱动级数据恢复v8.17.180955 Repack中文便携.rar

    R-STUDIO Network是一款备受推崇的专业级数据恢复软件,尤其在驱动级恢复领域,它展现出了强大的功能。本文将深入探讨R-STUDIO Network的数据恢复原理、特性以及实际应用。 R-STUDIO Network是一款由R-Tools ...

    三菱PLC编程数据线USB驱动程序

    3. 配置:安装完成后,可能需要在设备管理器中手动更新USB转串口设备的驱动,选择刚刚安装的驱动程序文件夹。 4. 验证:连接USB数据线到PLC,观察设备管理器中是否出现新的串口设备,然后在编程软件中尝试连接,确认...

    工业级USB驱动转232

    此外,工业级USB驱动转232还涉及到抗干扰设计、宽温范围工作能力、以及防尘防水等特性,以适应恶劣的工作环境。 在实际操作中,可能遇到的问题包括驱动不兼容、设备无法识别、通信中断等。解决这些问题通常需要检查...

    c# datagridview 操作 ACCESS 编辑 更新 插入 删除

    c# datagridview 操作 ACCESS 编辑 更新 插入 删除 ,在datagridview里进行编辑后,直接点击“保存”编辑即可同步更新数据库文件,数据库是mdb文件。程序能直接运行而不需要任何配置。此程序还是个解决 电力 拓扑...

    MCGS昆仑通态串口数据收发驱动

    MCGS(Monitor & Control for General System)昆仑通态是一款广泛应用于工业自动化领域的组态软件,它为用户提供了便捷的可视化界面设计和实时监控功能。其中,MCGS串口数据收发驱动是其重要组成部分,特别适用于...

    usb转console全系列驱动.rar

    对于Linux系统,驱动通常包含在内核源代码中,但可能需要更新或启用特定的模块。例如,FTDI芯片的驱动是`ftdi_sio`模块,而Prolific的对应模块是`pl2303`。用户可以通过`modprobe`命令加载模块,或者在`/etc/modules...

    python数据分析课程设计

    在这个课程设计中,学生通常会接触到一系列Python库,如Pandas、NumPy、Matplotlib和Seaborn等,这些工具在数据科学领域广泛应用。 1. **Pandas**:Pandas是Python中用于数据操作和分析的核心库,提供了DataFrame和...

    微信小程序实现数据浏览,新增,修改,删除

    这一过程同样需要在WXML中设计交互界面,JS中处理事件和数据更新逻辑。 6. **删除数据** 删除数据时,首先需要用户确认操作,防止误删。在WXML中,可以为每条数据添加一个删除按钮,JS中监听按钮点击事件,调用云...

    中国1-5级河流gis数据

    在中国1-5级河流GIS数据中,每条河流被表示为线对象,包含了河流的几何形状、长度、流向以及可能的附加属性,如河流等级、流域面积、平均流量等。这种数据结构使得用户能够进行空间查询、距离计算、缓冲区分析和网络...

    winio驱动级模拟键盘鼠标源码

    在驱动级模拟键盘鼠标的过程中,首先需要了解键盘和鼠标的数据格式,这些格式定义了如何通过端口发送模拟的按键或鼠标动作。例如,对于键盘,可能需要模拟扫描码(scancodes)的发送;对于鼠标,可能涉及X和Y轴的...

    东北大学数据结构课程设计

    在“东北大学数据结构课程设计”中,学生将深入理解并实践各种基本的数据结构,如数组、链表、栈、队列、树、图等,并学习如何针对特定问题选择合适的数据结构。 1. **数组**:数组是最基础的数据结构,它提供了...

    USB转LTP打印机数据线驱动 usb-print.rar

    USB转LTP打印机数据线驱动是连接计算机与打印机的重要组件,尤其在老式打印机与现代计算机之间建立通信时,这种转换通常必不可少。LTP(Line Printer Terminal)是一种早期的打印机接口标准,主要用于串行通信,而...

    java实现csv导出千万级数据实例

    本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...

    QT 程序 删除文本文件中某一行

    用qt 实现删除文本文件中一行,deleteonelineinfile&#40;int nNumLine, QString & filename&#41;;输入文件名和删除的行号可以删除。行号是0到行数减一。

    省市县三级联动+全国行政区划json数据包

    在IT领域,尤其是在前端开发中,"省市县三级联动"是一种常见的功能,它涉及到用户界面中的下拉选择框,用于选择国家、省份、城市及区县等地理信息。这种功能通常应用于地址输入、物流配送、门店查找等场景,提供用户...

    Cadence系统级封装设计 Allegro Sip APD设计指南

    《Cadence系统级封装设计 Allegro Sip APD设计指南》是针对电子设计自动化(EDA)领域的专业文献,主要聚焦于使用Cadence公司的Allegro软件进行系统级封装(System-in-Package,SiP)的设计流程和技术。SiP技术允许...

Global site tag (gtag.js) - Google Analytics