当属性值来自引用表时,应该如何填充实体(bean)对象属性?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当属性值来自引用表时,应该如何填充实体(bean)对象属性?相关的知识,希望对你有一定的参考价值。
假设你有一个名为Business
的实体对象,其属性如businessID
,businessName
,entityType
和entityTypeName
。与所有相关的setter / getters。
entityType
属性是一个整数,表示与包含所有可能实体类型(公司,LLC,唯一支柱等等)的引用表的外键(FK)关系。这是数据库图的样子:
当从CRUD read()方法填充Business
实体时,它会通过DAO(数据访问对象)中的INNER JOIN自动获取正确的entityTypeName
,并通过setEntityTypeName()
设置它。据我所知,这个过程对我来说很有意义,看起来很标准。
但是,假设您有一个Web表单,用户可以在其中编辑Business
实体对象。用户填写一个表单,他们可以根据选择的可用选项框(从参考表中填充)编辑业务名称和实体类型。
当用户提交表单时,将验证数据,然后服务对象使用表单中的值执行setBusinessName()
。接下来,它执行setEntityType()
并从实体类型选择框填充整数值。此时,entityTypeName
可能有效也可能无效(例如,如果用户更改了它)。
我可以想到几种方法来解决这个问题:
- 执行
setEntityType()
后,相同的表单服务将立即执行setEntityTypeName()
并填充正确的值。 (我认为最简单的方法,因为验证过程会检索正确的实体类型名称) Business
实体的setEntityType()
方法包含业务逻辑,通过某种类型的注入依赖项(服务)自动填充entityTypeName
属性,该依赖项将查找数据并进行分配。 (这似乎是一种更多的DDD方法)并且会使Business
实体对象需要更多的行为和依赖(服务等......)。
解决这种情况的正确方法是什么?显然这只是一个简单的例子,但在实际的数据模型中,可能有大量的参考字段,如entityType
,这将需要这样的行为。
编辑:语法修复
你不会。
看起来您正在将UI要求混合到您的域模型中。使用专用的视图模型来呈现数据,您的域模型应该只在完成任务时发挥作用。
我建议EntityTypeName
不属于Business
。 EntityType
是它自己的聚合根,Business
可能只需要参考EntityType.Id
。
您的setter可以更改为:
SetEntityType(EntityType entity) {
//Any rules here based on entity?
entityTypeId = entityType.GetId();
}
以上是关于当属性值来自引用表时,应该如何填充实体(bean)对象属性?的主要内容,如果未能解决你的问题,请参考以下文章
NSPredicateEditorRowTemplate:如何填充右侧弹出窗口