问题标签 [domain-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JPA/Hibernate:子类型与策略“模式”
以下是 JPA 注释类型层次结构,其中所有数据字段(以及相关的 getter 和 setter)都是超类型的成员以及用于实现业务逻辑的抽象方法。有许多子类型在不添加数据成员的情况下实现这些抽象方法,因此我们使用单表继承策略,因此我们只需要数据库中的一个表来支持这种类型层次结构。
我这样做是因为,根据数据的内容,必须实施不同的行为才能实现最终目标。
这是对 JPA/Hibernate 中鉴别器列概念的扭曲吗?
一位同事争辩说,由于数据的结构不会因子类型而异,因此抽象方法和相应的实现应该移动到类似于策略模式的方法中。他的想法更好吗?
model - 用于创建可以“动态”浏览的域模型图的工具
我想为我的项目创建和维护领域模型/高级概念模型。目前我正在使用 jDeveloper 并创建 UML 类图。这效果不好,我想找到一个更好的选择。
问题是,一旦对象的数量增长到足够大,图表就会包含如此多的关系,以至于几乎无法阅读和维护。该图是一个相互交叉的大蜘蛛网。
我认为UML建模工具和思维导图工具的一些混合将非常适合这种需求
- 需要高水平的概念化和与客户的沟通。图表不必是完美的 UML
- 我尝试过的一些思维导图工具只有节点之间的连接。这还不够,我至少需要关系中的多重性信息(0...*)以及为节点定义字段的能力
- UML 类图可以通过使用不同的线型(斜线/直角线)和通过布置类使相关类彼此相邻而变得更具可读性。我都试过了,但它们只能在一定程度上有所帮助,一旦图表足够复杂,你就无法避免它变得不可读。这就是“动态”部分的用武之地——您可以拥有一个工具,将类作为图中的节点,当您选择一个类时,它会将其置于中心,并且所有与它相关的类都在它周围。这样你就可以交互式地浏览类图/思维导图,一次专注于一个类。
grails - Grails/GORM:创建一对一的可选关系
我正在设计一个系统,用户之间的帖子/讨论可以升级为门票。在一个特定的地方,我试图创建一对一的可选关系,但遇到了某些问题。下面给出了聚光灯下实体的精简版本。
规则:
- 如果需要,帖子可以成为票证。(可选的)
- 一张票必须有一个帖子。(强制的)
Post.groovy
票务.groovy
这在某种程度上有效。我可以:
- 创建一个帖子,将票证属性保留为空如果以及何时将帖子升级为票证
- 我可以将 Post 的票证属性显式设置为指向父票证。
但是,此映射并未在域级别强制执行。它为 Ticket1 指向 Post1,但 Post1 指向 Ticket2 的情况留下了空间。
我尝试static hasOne = [post: Post]
在Ticket类中使用 a ,但后来了解到它要求static belongsTo = [ticket: Ticket]
在Post类中存在 a ,这成为强制性的一对一关系,这不是我想要的。
在这种情况下,有没有办法实现这种一对一的可选映射?任何指针都是最有帮助的。
database - 汽车服务数据库设计(领域模型)?
首先,我知道我可能不应该制作 Car、Model、Manufacture... 表,但现在这不是问题。
我必须说我已经让数据库和关系模型看起来像这样(我简化了它,专注于重要),但我需要绘制一个概念(域)模型:
客户(clientID、姓名、姓氏、电话)
地址( clientID , number, street, cityZipCode )
城市( cityZipCode , cityName)
访问(clientID、visitDate、totalPrice)
服务(服务ID,服务名称)
标准(criteriaName、size、measureUnit)
ServicePriceCriteria ( serviceID, criteriaName, size , price)
VisitItem ( clientID, visitDate, serviceID, criteriaName, size , quantity)
我最大的问题是如何提供一种服务可以针对不同的标准有不同的价格。
即卡车的换油费用为 15 欧元。对于 suv 相同的服务成本 8 欧元.... 另一个例子是价格取决于车轮的大小。对于 14 英寸车轮,一些维修费用为 10 欧元,而 17 英寸车轮的相同维修费用为 15 欧元。
所以对于第一个例子,我有: Service (123, 'Oil Changes'), Criteria ('typeOfVehicle', 'Truck', null), ServicePriceCriteria (123, 'typeOfVehicle', 'Truck', 15)
Service (123, 'Oil Changes'), Criteria ('typeOfVehicle', 'SUV', null), ServicePriceCriteria (123, 'typeOfVehicle', 'SUV', 8)
对于第二个示例,它看起来像这样: Service (124, 'Some Service'), Criteria ('Size of wheel', '14', 英寸), ServicePriceCriteria (124, 'Size of wheel', '14', 10)
Service (124, 'Some Service'), Criteria ('Size of wheel', '17', 英寸), ServicePriceCriteria (124, 'Size of wheel', '17', 15)
我希望你明白我的想法是什么。我想问你这是我的解决方案可以接受吗?这个数据库的正确域模型是:
c# - 基于域模型的边框颜色?
我的域模型中有一个 poco 类:
我在列表框项目模板中显示它。
但是我想做的是当 HasPlayed 为真时,边框的背景颜色变为红色,当为假时为绿色。这些画笔在资源字典中。
我可以将 Brush 添加到域模型中,但这会破坏关注点的分离。我也不会在未来使用复选框,这只是一个模拟 UI。
我已经尝试过 IValueConverter,但是当属性更改时它不会改变。该模型确实实现了 INotifyPropertyChanged。
当属性改变时你会如何改变颜色?
php - 如何使用数据映射器和域模型有效地对表格数据进行切片?
假设我有两个表:Book
和Category
. Book
有一个外键Category
。书只能有类别。假设我要显示此表:
使用域模型和数据映射器(Fowler 的定义),我们拥有对象Book
,Category
每个对象都有自己的映射器。这里的问题是,由于两者都是独立的实体,我最终会运行大量查询来显示上面的简单表:
这是一个获取要显示的书籍列表的查询,以及许多获取与每本书相关的适当类别对象的查询。
问题是,使用 SQL,我可以以任何我想要的方式对数据进行切片。我实际上可以通过一个查询获得我需要的所有数据:
我可以在使用此 SQL 的同时保持表示层、数据源和域逻辑层之间的分离吗?如果可以,怎么做?我们如何有效地分割我们想要显示的数据?
entity-framework - 分层 POCO 对象和存储库
假设我有一个与物理模型 1:1 对应的域模型。还:
- 物理模型中的所有表都以列名“Id”作为主键
- 许多表都有“LastChanged”时间戳列
- 一些表包含本地化数据
目标:创建领域模型类 (POCO) 和适当的存储库。工具 - VS2010、EF4.1
最明显的方法是从数据库生成 EF 模型,然后在其上运行 T4 POCO 生成器。输出是一组 POCO 类。
到目前为止一切顺利,但我们在实现存储库时遇到了一些代码重复。两者都在接口定义级别:
在实施层面:
考虑到上面的大部分代码都可以写得更通用,我们也可以采取如下方式。
创建 POCO 对象层次结构:
然后是具有基本实现的存储库层次结构:
后一种方法的引人注目的优势是代码更加结构化,可以避免代码重复。
但是这种情况几乎不适合 T4 代码生成,它为大量手动工作开辟了一个表面。
如果您让我知道您正在考虑以下问题,我将不胜感激:
- 您如何看待,代码之美真的值得手动实现它的麻烦吗?
- 有没有其他方法可以摆脱代码重复?
sorting - 如何对 grails 对象的持久集进行排序?
我有两个域模型:
控制器:
所以现在在我的gsp中:
我的问题是如何对这个“item.resources”进行排序?这是一套持久化的hibernate!我认为这可以用映射排序名称来处理:'asc',但它不起作用:-(
entity-framework - 将代码添加到 Entity Framework 4 生成的 POCO
从 EF 4 实体图开始并使用 T4 模板,可以创建可在域模型中使用的 POCO 类。生成的代码如下所示:
是否有任何优雅的方法来添加我自己的代码来实现属性?例如,我想通过降低所有字符来实现名称设置器。我希望我的代码能够抵抗从 EF 图中重复生成 POCO 类。
这个要求有点类似于向 POCO 类添加验证代码。这个问题已经通过创建一个单独的验证类并通过MetadataType
属性链接到 POCO 来解决。从 EF 图中重复生成 POCO 不会覆盖该单独的验证类。
谢谢,
卢西安
grouping - 领域模型和分组数据
我开始理解域模型的想法,但有一件事我看不到这是如何在域模型中实现的——分组数据。最明显的例子是各种报告,有或没有动态列分组和用户指定的列顺序。
我将尝试提供具体示例。想象一下以下领域模型:
显示为简单的 3 级列表。
然后要求通过从生产项目中添加“长度”字段(仅用于显示,不更改职位实体本身)来修改职位级别,并按此字段分组。
下一个要求是在职位级别从生产项目级别添加另一个 SUMmed 字段“重量”。同样,仅在展示中。
我需要改变什么来实现这个“人造”模型?
似乎需要某种复合值对象来代替位置:所有位置实体字段+大小字段+权重字段。我在正确的轨道上吗?