Questions tagged «entity»

13
OOP中的对象是否必须代表实体?
对象是否必须代表实体? 由一个实体我的意思是这样一个Product,Motor中,ParkingLot等,物理,或甚至一个明确的非物理概念对象-这被很好地定义,其中一些核心数据清楚地属于对象的东西,以及一些功能/方法显然对核心数据起作用。 例如,我可以有一个对象,Demon它本身是一个实体,一个虚构的对象,也许不是物理的,但仍然是一个实体 一个对象可以仅仅是方法的集合,一组与一个共同目标相联系的通用过程吗? 示例:可以在没有实体的情况下调用MotorOperations或的类MotorActions,但是该类内部的方法可以执行以下操作 getMotorDataFromHTMLForm() getMotorManufacturers() selectMotorFromUserRequirements($ requirements) canMotorCanHandleOperatingConditions($ conditions) computePowerConsumptionForMotor($ id) 通常将类定义为对象的中心数据+数据操作。因此,Motor对于可能存在一些与电动机规格有关的电动机变量,并且可能存在将这些数据组合以产生某些结果的操作。 就我而言,这更像是我有一个对数据+ 通过该类传递数据的操作的类,除了临时传递类数据之外,没有任何以“ Motor Operations”为中心的数据。 题 类可以表示无实体的对象吗?如果不是,为什么它们不好/不完整/不以OOP为中心?有什么方法需要在概念上进行更改/改进以符合OOP?

1
DTO代替实体有什么用?
我正在研究RCP应用程序,我是这个应用程序的新手。 Spring bean用于编写业务逻辑来保存/获取实体。 但是,我们不是将实体直接发送给客户端,而是转换为DTO并填充客户端。保存时,我们再次将DTO转换为实体并保存。 这些转换有什么好处?有人可以解释吗?
18 java  spring  entity  map  dto 

2
实体到DTO的使用
一直在尝试提出基本的分层Web应用程序的流程,并一直在线阅读有冲突的信息。我想弄清楚的是,通过使用某种映射器,仍然可以从DAO到Service层继续使用DTO对象是否有优势。 我预见的基本流程如下: UI模型/表单->控制器 控制器将模型转换为域对象(实体) 域对象->服务层 域对象-> DAO DAO->域对象 服务-> UI UI将Domain转换为UI模型 如果遵循DTO,则DAO将回传DTO,而不是实体。经过一番阅读后,由于(至少在Java中)实体已成为带注释的POJO,因此DTO似乎已经失效,这意味着它们的内存占用量已经很小。 是这种情况,还是应该使用DTO将域对象完全封装在DAO层中?如果是这种情况,服务层将如何传递给DAO? 谢谢一群!
15 java  entity  jpa 

4
从域访问存储库
假设我们有一个任务记录系统,当记录一个任务时,用户指定一个类别,并且该任务默认为“未完成”状态。在这种情况下,假定类别和状态必须作为实体实施。通常我会这样做: 应用层: public class TaskService { //... public void Add(Guid categoryId, string description) { var category = _categoryRepository.GetById(categoryId); var status = _statusRepository.GetById(Constants.Status.OutstandingId); var task = Task.Create(category, status, description); _taskRepository.Save(task); } } 实体: public class Task { //... public static void Create(Category category, Status status, string description) { return new Task …

4
在对数据库建模时,何时应使用弱实体?
这基本上是一个关于弱实体是什么的问题?我们什么时候应该使用它们?应该如何建模? 普通实体和弱实体之间的主要区别是什么?在进行域驱动设计时,弱实体是否对应于值对象? 为了使问题始终保持话题,这里是一个来自维基百科的示例,人们可以用来回答以下问题: 在此示例中OrderItem,我们将其建模为弱实体,但我不明白为什么不能将其建模为普通实体。 另一个问题是,如果我想跟踪订单历史记录(即订单状态的变化),那将是正常实体还是弱实体?

2
如何设计总体边界?
我想编写一个类似电子商务的应用程序。 您知道,在类似的应用程序中,产品可能具有不同的属性和功能。为了模拟这种机会,我创建了以下域模型实体: 类别 -这类似于“电子产品>计算机”,即产品类型。分类包含属性列表(List <属性>)。 属性 -包含名称,度量单位,数据类型的独立实体。例如“名称”,“重量”,“屏幕尺寸”。同一属性可以具有不同的产品。 产品 -仅包含名称和与属性有关的值列表。值是一个仅包含值字段和属性的字段ID的对象。 我最初决定在此方案中使Category像单个聚合一样,因为例如当我添加新产品时,我需要知道与当前类别有关的所有数据,包括与当前类别有关的属性(category.AddNewProduct(product))。但是,当我只需要添加不属于任何类别的新属性时该怎么办。例如,我不能执行此category.AddNewProperty(property),因为它明确表示我们将属性添加到特定类别。 好的,下一步我决定将Property划分为单独的聚合,但是它将是一个包含简单实体的列表。 当然,我可以创建诸如PropertyAggregate之类的内容以保留在属性和业务规则列表中,但是当我添加产品时,我需要在类别内具有属于该类别的属性的整个列表,以检查不变量。但是我也意识到,将链接内的链接保留在其他聚合上是一种不好的做法。 设计此业务案例有哪些选择?

2
如何在CQRS中创建新的聚合根?
我们应该如何在cqrs体系结构中创建新的聚合根?在此示例中,我想创建新的聚合根AR2,其中包含对第一个AR1的引用。 我正在使用AR1方法作为起点来创建AR2。到目前为止,我看到的选择很少: 在AR1的内部方法中,createAr2RootOpt1我可以new AR2()使用具有访问存储库权限的域服务立即将该对象调用并将其保存到db。 我可以在第一个聚合根发出事件,例如。SholdCreateAR2Event然后有无状态的传奇对此做出反应并发出命令CreateAR2Command,该命令随后被处理并实际创建AR2并发出AR2CreatedEvent。如果使用事件源SholdCreateAR2Event,则不会将其保留在事件存储中,因为它不会影响第一个聚合根的状态。(或者我们还是应该将其保存在事件存储中?) class AR1{ Integer id; DomainService ds; //OPTION 1 void createAr2RootOpt1(){ AR2 ar2 = new AR2(); ds.saveToRepo(ar2); } //OPTION 2 void createAr2RootOpt2(){ publishEvent(new SholdCreateAR2Event()); //we don't need this event. Shoud it still be preserved in event store? } } class AR2{ Integer id; Integer ar1Id; void …

3
实体框架实体-来自Web服务的一些数据-最佳体系结构?
当前,我们在多个Web应用程序中使用Entity Framework作为ORM,并且到目前为止,由于我们的所有数据都存储在单个数据库中,因此它非常适合我们。我们正在使用存储库模式,并具有使用它们的服务(域层),并将EF实体直接返回到ASP.NET MVC控制器。 但是,提出了使用第三方API(通过Web服务)的要求,这将为我们提供与数据库中与用户相关的额外信息。在我们的本地用户数据库中,我们将存储一个外部ID,我们可以将其提供给API以获取其他信息。有很多可用的信息,但是为了简单起见,其中之一与用户的公司有关(名称,经理,房间,职务,位置等)。此信息将在整个Web应用程序的各个位置使用-而不是在单个位置使用。 所以我的问题是,填充和访问此信息的最佳位置是哪里?由于它已在各个地方使用,因此无论我们在Web应用程序中使用的何处,都临时地获取它并不明智,因此从域层返回这些附加数据是有意义的。 我最初的想法只是创建一个包含EF实体(EFUser)的包装模型类,以及一个包含新信息的新'ApiUser'类-当我们获取用户时,我们获取EFUser,然后获取其他来自API的信息,并填充ApiUser对象。但是,虽然这对于获得单个用户来说是不错的选择,但在获得多个用户时却会失败。获取用户列表时,我们无法点击API。 我的第二个想法只是向EFUser实体添加一个单例方法,该实体返回ApiUser,并在需要时填充它。这解决了上述问题,因为我们仅在需要时才访问它。 或最终的想法是将数据的本地副本保留在我们的数据库中,并在用户登录时将其与API同步。这是最小的工作,因为这只是一个同步过程-而且我们没有点击的开销每当我们想要获取用户信息时,数据库和API。但是,这意味着将数据存储在两个位置,也意味着该数据对于已经一段时间没有登录的任何用户而言都是过时的。 是否有人对如何最好地处理这种情况有任何建议或建议?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.