当前位置: 首页 > 面试题库 >

在ejb3中使用数据传输对象被认为是最佳实践

阚通
2023-03-14
问题内容

尽管显然不是所有场景都可以用一个设计覆盖,但现在是否普遍认为应该在表示层和业务层(本地或远程)之间来回传递ORM类,从而取代了对数据传输对象的需求?据我所知,使用ORM类会带来不必要的急切加载,上下文管理问题和紧密耦合的问题,但还可以节省大量时间,并使事情变得简单。现在是否存在一种标准的方法(通常在大多数情况下)通常会优先选择另一方法?


问题答案:

这是一个非常有趣的问题,在过去的两年中,我一直在进行研究和试验。

我认为这里确实没有对或错的答案。我认为您不能简单地说我想要一个,因为通常您可能希望根据您的客户(网页,ws,计算机和/或本地,远程)使用混合功能。

这里要记住的重要一点是每种产品的优缺点是什么,并根据您的要求进行应用。

例如:

  • 如果您使用的是SEAM,那么您将希望避免使用分层结构,因为您可以访问扩展的持久性上下文。没有此支持的其他Web技术往往与DTO更好地配合使用,该DTO预先准备了该州。
  • 如果要发送远程消息,导入的目的是保持它的轻薄,DTO在这里通常比富域对象更好。在这里,您可以透明地禁止任何ORM问题/行为。
  • DTO模式的好处是可以保护您的客户免遭域更改。如果您的应用程序是Web服务,并且具有定义您的合同的域(实体)对象,这可能会在某些时候使您陷入困境,这一点尤其重要。

通过将系统分层包装并仔细公开和保护它们,可以为许多不同类型的客户端生成各种API。



 类似资料:
  • 使用Spring Data nad Querydsl,我们可以只声明存储库接口并跳过实现类。一些具有特定名称或使用@Query注释的方法,仅此而已。 但是有时我想使用JPAQuery并自己定义方法的主体,比方说 null

  • 我有一个父组件,它有许多子组件(子组件是一个带有彩色背景的空div)。 我想改变孩子的颜色,但要确保我正在使它变成一个不同的颜色比它已经是-例如,如果孩子是蓝色的,我想改变它到另一个颜色,不是蓝色。 为此,我使用一个道具来设置初始颜色,并将此道具保存到孩子的状态。 当我点击div更改颜色时,我想访问div的当前颜色,以便我可以将其从选择中排除,当然可以从中进行选择 1)这被认为是可以做的反应吗?2

  • 问题内容: 我最近听到有人说数据传输对象(DTO)是一种反模式。 为什么?有哪些选择? 问题答案: 一些项目的所有数据都有两次。一次作为域对象,一次作为数据传输对象。 这种重复需要付出巨大的代价,因此该架构需要从这种分离中获得巨大的收益,才能使其值得。

  • 我想使用蟒蛇数据类作为数据容器,它可以传递给程序中的其他类。具体来说,我想在数据类中存储所有默认值,但可以通过用户输入在我的主类中更改值。随后,更新的数据对象应该被传递给所有其他使用它执行计算的类。此外,数据类已经利用post_init准备了一些数据供以后使用。 目前我的解决方案示意性地是 问题是,我不喜欢把**kwargs传递给我的数据类,因为对我来说这感觉像是糟糕的练习。然而,它的行为完全像我

  • 最近我考虑了在MySQL数据库中存储历史数据的最佳实践。目前,每个可版本表都有两列-和,都是类型。具有当前数据的记录的填充了其创建日期。当我更新此行时,我将填充更新日期,并使用添加新记录,与前一行中的相同-简单的操作。但是我知道这个表会非常大,非常快,所以获取数据会非常慢。 我想知道您是否有存储历史数据的实践?

  • 4.2 ABP应用层 - 数据传输对象 数据传输对象(Data Transfer Objects)用于应用层和展现层的数据传输。 展现层传入数据传输对象(DTO)调用一个应用服务方法,接着应用服务通过领域对象执行一些特定的业务逻辑并且返回DTO给展现层。这样展现层和领域层被完全分离开了。在具有良好分层的应用程序中,展现层不会直接使用领域对象(仓库,实体)。 4.2.1 数据传输对象的作用 为每个应