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