Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Database 两层和三层实际实施_Database_Architecture - Fatal编程技术网

Database 两层和三层实际实施

Database 两层和三层实际实施,database,architecture,Database,Architecture,我正在创建一个小型数据库应用程序。在这些应用程序中,我使用JavaSwing并使用Hibernate访问数据库。 昨天,我的朋友问我您使用的是两层还是三层? 我的回答是我不知道。 然后我在谷歌上搜索,找到了一些答案,这些答案的链接如下。 我读了这两个链接,所以我不太懂。 但仍然无法确定它们实际上是如何实现的,我的意思是用编程语言。 我仍然无法理解它是什么?这些措施是如何实施的?你能给我一个实现它们的实际例子吗?在你的应用程序中,你有一个基于Swing的GUI和一个到DB的连接。 当用户通过G

我正在创建一个小型数据库应用程序。在这些应用程序中,我使用JavaSwing并使用Hibernate访问数据库。 昨天,我的朋友问我您使用的是两层还是三层? 我的回答是我不知道。 然后我在谷歌上搜索,找到了一些答案,这些答案的链接如下。



我读了这两个链接,所以我不太懂。

但仍然无法确定它们实际上是如何实现的,我的意思是用编程语言。


我仍然无法理解它是什么?这些措施是如何实施的?你能给我一个实现它们的实际例子吗?

在你的应用程序中,你有一个基于Swing的GUI和一个到DB的连接。 当用户通过GUI进行一些更改时,它会立即反映在DB上(即更新/插入/删除等)。 因此,您有一个2层体系结构(GUI+DB)

现在假设,当用户通过GUI进行一些更改时,您将向某个服务器(例如Web服务器)发送适当的请求,该服务器处理您的请求,然后对DB执行适当的操作,而不是直接转到DB。
在这种情况下,你有一个3层体系结构(Gui+Server +DB)

,根据你与Grisha的讨论,你似乎需要考虑层和层之间的区别。p> 应用程序中的层是分离的逻辑单元。例如,您可能有用户界面层、业务逻辑层、服务层、数据访问层。每一层都应该有代码来实现应用程序的该部分/单元

该层表示分离/部署的物理单元。如果所有层(用户界面层、业务逻辑层、服务层、数据访问层)都部署在同一台服务器上,那么您只有一个层

若数据库托管在单独的计算机上,而所有其他层托管在另一台服务器上,那个么您的服务器有两层

通常,随着用户数量(或应用程序负载)的增加,单个服务器无法高效运行,因此,如果可能,我们需要添加更多层,或者需要使用更强大的服务器

因此层的数量可以小于或等于您拥有的层的数量。您只能在设计阶段说出层的数量,因为应用程序的体系结构已经确定,但层的数量可以在您计划部署后确认

请查看“设计的可伸缩性选项”部分@


如果您有任何进一步的问题,请随时讨论。谢谢

还有一件事是,我如何决定或判断我现在使用的是哪一层?我的意思是说两层还是三层?所以现在我可以说我使用的是两层架构。谢谢但是,正如我指定的,还有一件事我使用hibernate作为中间层,那么它也是两层的?hibernate只是使用DB的一种方法。它不会影响体系结构。因此,根据你的回答,如果我说我的数据库应用程序将在一台机器上实现,那么它是一层。我说的对吗?是的,如果数据库应用程序将在一台机器上实现,而同一台机器将承载应用程序的其他部分…那么它是一层…你说得对!如果我有两台机器,一台机器将有完整的数据库应用程序,另一台机器将只有一种形式的应用程序,那么它将是两层的,因为你将在一台机器上有用户界面层(一种形式的应用程序),在另一台机器上有其余的应用程序。