Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建BO、DO、DTO、DAO只是为了在主ID上执行SELECT的技术优势是什么?_Java_Architecture_Callstack - Fatal编程技术网

Java 创建BO、DO、DTO、DAO只是为了在主ID上执行SELECT的技术优势是什么?

Java 创建BO、DO、DTO、DAO只是为了在主ID上执行SELECT的技术优势是什么?,java,architecture,callstack,Java,Architecture,Callstack,我正在开发Java代码库,并且是Java社区的新手。我独立使用过Java,但从未与可能使用惯用Java的团队合作过 目标是对主键执行选择。为了做到这一点,代码库创建了a、a、a和a。它们并非都是用相同的方法创建的。有一个深层调用堆栈,其唯一目标是从另一个调用堆栈创建其中一个调用堆栈。最后,DAO使用QueryEngine对象与持久化存储进行对话。QueryEngine负责抽象持久存储 我看到了抽象持久性存储的价值,因为您可以保持灵活性,在不破坏客户机的情况下更改它的底层内容。我和其他人一样喜欢对

我正在开发Java代码库,并且是Java社区的新手。我独立使用过Java,但从未与可能使用惯用Java的团队合作过

目标是对主键执行
选择
。为了做到这一点,代码库创建了a、a、a和a。它们并非都是用相同的方法创建的。有一个深层调用堆栈,其唯一目标是从另一个调用堆栈创建其中一个调用堆栈。最后,DAO使用
QueryEngine
对象与持久化存储进行对话。
QueryEngine
负责抽象持久存储

我看到了抽象持久性存储的价值,因为您可以保持灵活性,在不破坏客户机的情况下更改它的底层内容。我和其他人一样喜欢对象,但我不明白你为什么要这样写代码?这是因为整个代码库都充满了这些代码吗

PS:我忽略了关于由于看似不必要的对象创建和方法调用导致内存分配而导致性能下降的讨论


PPS:所使用的语言是Java,而且此处链接的所有Wikipedia页面似乎质量较低,而且是Java特定的,尽管它们试图让计算机科学听起来很普通。

松耦合和性能之间总是存在相反的关系

对于每一个新版本的框架,松耦合都会增加,而性能则会降低。但这里有一个陷阱,硬件配置正在以更快的速度改进,因此可以很好地补偿性能下降

由于额外的对象、函数调用而导致性能下降是过去讨论的问题,今天的重点是使应用程序松散耦合和可伸缩

在您的情况下,虽然您的流可能不需要这么多对象,但拥有一致的流是很好的,这样可以帮助新程序员更好地理解它。可能还有其他需要这种松耦合级别的请求

有许多优点: 1.可重用性—如果您的代码部分被公开,其他人可以使用它,这使得它更通用。 2.维修 3.测试 4.安全性-仅公开所需内容。
5.添加额外的需求会容易得多。

这是将整个系统划分为多个层的最佳实践。我可以从您的描述中看出,您的应用程序有一个非常通用的数据层。
正如Vivek所提到的,添加这些层可能会提供松散耦合,但会降低性能。类似地,可维护性和编写代码的方便性之间也存在相反的关系。在您的情况下,设计器已经考虑了可维护性。在正常情况下,由于结构如此复杂,公司拥有代码生成工具。这些工具为所有表和视图生成代码,并为开发人员提供高级对象。开发人员只需使用这些对象访问和修改数据。这是大多数面向对象编程语言(如Java)提供的封装。

我不确定这种失去耦合的价值是什么?所有这些层的目的只有一个——抽象持久存储。不