java - 创建 BO、DO、DTO、DAO 仅对主 ID 执行 SELECT 有哪些技术优势?

标签 java architecture callstack

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

目标是对主键执行 SELECT。为此,代码库创建了一个 business object , 一个 data object , 一个 data transfer object和一个 data access object .它们并非都以相同的方法创建。有一个很深的调用堆栈,其唯一目标是从另一个创建其中一个。最后,DAO 使用 QueryEngine 对象与持久存储进行对话。 QueryEngine 执行抽象持久存储的工作。

我看到了抽象持久性存储的值(value),因为您可以灵活地更改它的底层内容,而不会破坏您的客户。我和下一个人一样喜欢对象,但我不明白你为什么要这样写代码?这是惯用的 Java 是因为整个代码库都充满了这些吗?

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

PPS: 使用的语言是 Java,而且这里链接的所有维基百科页面看起来质量都很低而且是特定于 Java 的,尽管它们听起来对计算机科学来说是通用的。

最佳答案

松散耦合与性能之间始终存在反比关系。

随着每个新版本的框架,松散耦合增加,性能下降。但这里有一个问题,硬件配置正在以更快的速度改进,因此可以很好地补偿性能下降。

性能下降因为额外的对象、函数调用是过去的讨论,今天的首要任务是让应用程序松散耦合和可扩展。

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

关于java - 创建 BO、DO、DTO、DAO 仅对主 ID 执行 SELECT 有哪些技术优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22058930/

相关文章:

java - Mysql 按可变字段排序

assembly - 编程语言是否有可能自信地防止堆栈溢出时的未定义行为?

c++ - 为什么在调用的赋值析构函数中使用 in const 时,赋值是正确的

c++ - 关于回调函数和线程的一般查询

java - 将字符串从 protected void onCreate 方法解析为公共(public)类主要 Activity

Java Runtime.getRuntime() 非法参数异常

java - 我希望当用户使用 GPS 进入 10 米半径时收到通知

c++ - C++中的变量存储在哪里?

design-patterns - 当发布/订阅消息传递消除模块的接口(interface)时该怎么办?

.net - 我应该在 DDD .NET 中为有界上下文使用单独的项目吗?