Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 数据访问对象应用程序_Java_Jakarta Ee - Fatal编程技术网

Java 数据访问对象应用程序

Java 数据访问对象应用程序,java,jakarta-ee,Java,Jakarta Ee,我是j2EE中使用DAO的新手。我对实现这个有点困惑,因为我看到已经有了一个具体的类,但我们正在使用一个接口。有人能详细地告诉我为什么使用接口而不是直接使用具体的类吗?数据访问对象只是模式的一部分,是手头数据存储之上的抽象。由于数据存储的细节可能会随时间而变化(从MsSQL更改为MySQL或Oracle或任何NoSQL存储),因此最好为数据提供一个API,从而在Java中使用接口 对数据的访问因数据源的不同而不同。对持久存储(如数据库)的访问因存储类型(关系数据库、面向对象数据库、平面文件等)和

我是j2EE中使用DAO的新手。我对实现这个有点困惑,因为我看到已经有了一个具体的类,但我们正在使用一个接口。有人能详细地告诉我为什么使用接口而不是直接使用具体的类吗?

数据访问对象只是模式的一部分,是手头数据存储之上的抽象。由于数据存储的细节可能会随时间而变化(从MsSQL更改为MySQL或Oracle或任何NoSQL存储),因此最好为数据提供一个API,从而在Java中使用接口

对数据的访问因数据源的不同而不同。对持久存储(如数据库)的访问因存储类型(关系数据库、面向对象数据库、平面文件等)和供应商的实现而不同

由于客户机只能通过接口看到数据的公共API,因此可以在不产生任何后果的情况下更改其背后的实现(假设这些更改遵守API建立的合同)

“使用数据访问对象(DAO)抽象和封装对数据源的所有访问。DAO管理与数据源的连接以获取和存储数据。”

如果客户机使用具体的DAO类而不是DAO接口,那么每次更改和重新编译DAO类时,客户机也应该重新编译。在许多情况下,这是不可取的,因为您不想停止应用程序和/或无法控制客户端

另一方面,如果DAO接口保持不变,则实现该接口的类可以用更大的自由度进行更改/替换

请注意,DAO接口只是设计模式中的一个参与者。您必须更好地理解DAO如何适合/不适合您的体系结构。您可能希望根据自己的需求以不同的方式组织数据访问

一种选择可能是使用活动记录或数据映射器等,但实际上,有许多不同的可能性

资料来源:

资料来源:

一般来说,如果有接口的具体实现以及接口选项,那么在您的设计中就有选择(Java中还有其他类似的选项)。使用Java,我们知道我们只能扩展一个类,因此接口可能是基于其他设计选择的唯一选项。