从题目上看到这是一个很奇怪的需要。 具体说来现在有一组domain 对象, 它们是用来表示各种规则的。 总共有大约10类这些对象, 每一种对象又分为不同层次的, 不同复杂度。 现在有一个需求, 客户想针对某一类domain 对象, 想批量的修改它们的属性, 这些属性的修改是比较复杂的,需要在UI 上面设定。 在用户提交save 请求后 系统记录下所有的修改请求。 可能涉及到多个domain 对象的属性的增加、修改或者删除。
系统中一个MDB 类型的EJB 取得这个request, 然后分析出所有domain 的增加、修改或者删除, 执行具体的相应的操作。 如果针对某一个domain 对象的操作失败 并不会影响别的domain 对象的修改, 系统只是记录下该失败的domain 的操作供反馈给用户。
说了一大堆, 问题出来了, 怎么保持这个临时的request的内容。 按照本人已经其他开发人员的意思将这个请求的内容 序列化, 如果担心二进制的序列化难以debug, 可以将其marshal 成 XML string, 保存到CLOB类型的字段中。 这样就是一个典型的key/value 的形式。
但是现在客户坚决反对这种方式 提出了采用动态表的方式。 主要涉及到两张表 item 表记录需要改变的 domain 对象 ,类型: 增加 , 修改, 删除, 以及domain对象的 key; 另外一张item detail 表 记录domain 对象的每一个需要改变的属性。主要记录改变后属性的值。 当然如果domain 里的属性如果是另外一个domain, 就需要涉及到另外一个item , 这个属性对应的item的 parent 是原来的那个domain 对应的item。 系统中一大堆的domain 对象 总共5,60个, 如果每个这么手工match 非要疯掉不可。 现在想到一个主意 前期已经有每一个domain 对象到 数据库表的 Hibernate ORM mapping 文件。 可以通过分析这些mapping 文件 得到每个domain 中的属性 对应表字段的对应关系, 然后根据前台传过来的 domain 对象来通过反射方式分析所有的属性。
写了这么一大堆, 只是为了让自己更清楚点。 先暂时这样, 这段时间就要耗在上面了,囧。
分享到:
相关推荐
### AMI Use Case: C1 — 客户响应定价或自愿减载事件降低用电量 #### 使用案例描述 ##### 使用案例标题 AMI Use Case: C1 — 客户响应定价或自愿减载事件降低用电量 ##### 使用案例概览 本使用案例详细描述了一...
gtest批量执行case示例
ky挂钩更换盒允许在ky请求期间对对象的请求和响应进行修改的情况安装NPM $ npm install @alice-health/ky-hooks-change-caseCDN用法import ky from "ky" ;import { requestToSnakeCase , responseToCamelCase ,} ...
包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...
### 批量修改替换多个Word文档中同一内容的方法 在日常办公或文档处理工作中,我们经常需要对大量的Word文档进行内容的修改与替换操作。如果这些文档数量较多且需要替换的内容相同,那么手动一个一个地打开文档并...
1. **jQuery基础**:Lightcase依赖于jQuery库,所以首先需要在网页中引入jQuery。jQuery是一个强大的JavaScript库,简化了DOM操作、事件处理、动画制作和Ajax交互,使得开发者能够更高效地编写JavaScript代码。 2. ...
【UseCase文档模版在面向对象软件开发中的应用】 Use Case驱动的面向对象软件开发方法是一种以用户需求为中心的方法论,由Rational统一过程(RUP)所提倡。在这个过程中,Use Case模型扮演了核心角色,它清晰地描述...
将对象的所有键更改为给定大小写。 这在 AWS 等返回大写属性、打破约定的服务中很有用。 用法 var objectKeysToCase = require('object-keys-to-case'); var camelCase = require('camel-case'); var foo = {Bar: ...
对象案例 使用不同大小写键的对象。 受到启发 安装 [hden/obj-case " 0.1.0 " ] {hden/obj-case { :mvn/version " 0.1.0 " }} 用法 进来 ( require '[obj-case :as obj]) ( def input { :my { " super_cool " { " ...
包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...
包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...
包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...
VBA 批量替换多个 WORD 文档中的内容 VBA 批量替换多个 WORD 文档中的内容是使用 VBA 编程语言来实现批量替换多个 WORD...在实际使用中,可以根据需要更改代码中的搜索文本和替换文本,以达到批量替换不同内容的目的。
烤肉串 将字符串转换为kebab-case,即用破折号分隔的形式 kebab-case和例如之间的区别在于,除了将大写字母转换为以-开头的小写字母外,该模块不会以任何其他方式修改字符串。 由于这个原因,还有一个函数可以执行...
1. **C#语言基础**:一种面向对象的编程语言,适用于Windows平台的应用程序开发。 2. **MP3文件格式**:一种流行的音频压缩格式,广泛应用于数字音频领域。 3. **文件操作**:利用.NET Framework提供的文件系统API...
`switch-case` 语句是 Java 语言中的一个控制流结构,它允许程序根据不同的条件分支执行不同的代码块。在给定的例子中,`switch-case` 语句被用来根据学生的成绩分配相应的等级,如 A、B、C、D 或 F。 首先,我们...
MySQL批量添加、修改、删除SQL语句详解 MySQL是一种广泛使用的关系数据库管理系统,它提供了许多功能强大且灵活的SQL语句来管理和操作数据。在实际开发中,我们经常需要批量添加、修改、删除数据,这篇文章将详细...
此板条箱提供#[test_case]程序宏属性,该属性使用一个具有不同输入参数的主体生成多个参数化测试。 将为在test_case属性中传递的每个数据集生成一个测试。 在引擎盖下,所有共享同一主体的测试用例都被分组为mod ,...
达梦数据库CASE_SENSITIVE参数学习报告 CASE_SENSITIVE参数是达梦数据库中一个重要的参数,它控制着数据库中标识符的大小写敏感性。在安装数据库时,该参数需要进行设置,默认情况下是敏感的,且设置后不能更改。 ...
物品箱ItemCase是一个Bukkit插件,允许您在平板上展示商品,这些商品也可以用作商店。 页面文档来源最新和最伟大的资源可以在上。 在上下载最新版本。编译中ItemCase使用Maven处理其依赖项。 安装 签出此仓库并运行...