Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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_Architecture_Rest_Restlet - Fatal编程技术网

Java 如何在应用程序中组织和管理多个数据库凭据?

Java 如何在应用程序中组织和管理多个数据库凭据?,java,architecture,rest,restlet,Java,Architecture,Rest,Restlet,好的,我正在设计一个独立的web服务(使用RestLET作为我的框架)。我的应用程序分为三层: 数据层(就在数据库上方,提供用于连接/查询数据库的API和数据库对象) 对象层(负责数据层的序列化…提供客户端层可以使用的对象,而无需担心数据库) 客户端层(该层是RestLET web服务…基本上只是从对象层创建对象并满足web服务请求) 现在,对于我在对象层中创建的每个对象,我希望使用不同的凭据(这样我可以对每个对象进行沙箱…)。对象层不应该知道确切的凭证(即登录/pw/dburl等) 管理这

好的,我正在设计一个独立的web服务(使用RestLET作为我的框架)。我的应用程序分为三层:

  • 数据层(就在数据库上方,提供用于连接/查询数据库的API和数据库对象)
  • 对象层(负责数据层的序列化…提供客户端层可以使用的对象,而无需担心数据库)
  • 客户端层(该层是RestLET web服务…基本上只是从对象层创建对象并满足web服务请求)
现在,对于我在对象层中创建的每个对象,我希望使用不同的凭据(这样我可以对每个对象进行沙箱…)。对象层不应该知道确切的凭证(即登录/pw/dburl等)

管理这一问题的最佳方法是什么?我想我的数据层应该有一个超类数据库对象。。。每个子类将包含所需的登录信息。。。这样,我的对象层就可以运行
Database db=new SubDatabase()
然后继续使用该数据库

在客户机级别上,他们只需要转到
ItemCollection items=newitemcollection()并且不知道/无法控制连接的数据库

我问这个问题是因为我试图使我的平台可扩展,以便其他人可以轻松地在我的平台上创建服务

如果有人对这些体系结构问题有任何经验,或者有如何管理这类事情的经验,我将非常感谢任何见解或建议

如果这令人困惑,请随时提问。谢谢


我的平台是Java,我使用的REST框架是RestLET,我的数据库是MySQL。

我的建议是使用JTA,可以使用多个数据库和相应数量的数据源。您可以在这里查阅更多信息

我的建议是使用JTA,在这里您可以使用多个数据库和相应数量的数据源。您可以在此处查看更多信息

我觉得您的解释是合理的,您正在尝试不将数据库详细信息和凭据公开给cleint级别

对于这种情况,您需要考虑任何可能有助于您的设计模式 我可以想到singleton模式,您可以创建一个实例并在对象层中使用它,从而避免向用户显示有关Credentail和URL的任何细节


第二种选择,我想到的是使用hibernate层,这将帮助您隐藏详细信息,只需访问ORM对象,您就可以获得所需信息。

我觉得您所解释的是合理的,您正在尝试不将数据库详细信息和凭据公开给cleint级别

对于这种情况,您需要考虑任何可能有助于您的设计模式 我可以想到singleton模式,您可以创建一个实例并在对象层中使用它,从而避免向用户显示有关Credentail和URL的任何细节


第二种选择,我想到的是使用hibernate层,它将帮助您隐藏细节,只需访问ORM对象,您就可以得到您想要的东西。

我将回应@saugata的评论。查看并将数据源实现(或用于测试的存根!)注入Spring配置中的对象层。这将在许多方面帮助您的整个应用程序体系结构:

  • 您将能够动态切换数据库(实例或实现),而无需重新编译代码
  • 您将完全从数据源的实现中抽象出数据源—允许您将数据库交换为web服务、队列实现或存根
  • 以这种方式分离应用程序将使其更易于测试

  • 我将附和@saugata的评论。查看并将数据源实现(或用于测试的存根!)注入Spring配置中的对象层。这将在许多方面帮助您的整个应用程序体系结构:

  • 您将能够动态切换数据库(实例或实现),而无需重新编译代码
  • 您将完全从数据源的实现中抽象出数据源—允许您将数据库交换为web服务、队列实现或存根
  • 以这种方式分离应用程序将使其更易于测试

  • 如果您使用的是Spring或任何应用服务器,那么可以分别配置bean和数据源。您的DAO可以注入或查找相同的内容。如果您编程到接口,而不使用任何特定于DB的功能,那么它将正常工作。如果您使用的是Spring或任何应用程序服务器,则可以分别配置bean和数据源。您的DAO可以注入或查找相同的内容。如果您编程到接口,而不使用任何特定于DB的功能,那么它将正常工作。