【问题标题】:What Design Pattern is Useful for Communicating With Database什么设计模式对与数据库通信有用
【发布时间】:2013-10-22 01:55:51
【问题描述】:

我需要一个适合与数据库通信的设计模式。

我想要一个被软件的不同子系统用来与数据库通信的对象。该对象将在函数中包含所有 MySQL 查询。

例如:

class DatabaseController
{
   getAllUsers()
   {
     // Access the Database and get all the UserNames.
   }

   findUserID(String id)
   {
      // Look in the User Table in MySQL database.
   }

   findItem(String itemName)
   {
      // Look in the item's table in MySQL database.
   }
}

我在考虑一个单例,这样我就可以只提供一个到 DatabaseController 的入口点。

是否存在允许其他类与 DatabaseController 通信并具有与数据库通信的功能的高级设计模式?

例如,软件的不同部分会调用。

class ItemController
{
  findItem(String itemName)
  {
     DatabaseController.findItem(itemName);
  }
}

[编辑] 我正在寻找可以自己编写的东西,可能正在查看教程,并且使用 Java。

【问题讨论】:

  • Unit of WorkRepository Pattern。但是我只知道这个概念,但不知道实现/最佳方法。

标签: java database design-patterns


【解决方案1】:

取决于我认为的数据库,但请查看实体框架和数据存储库模式。

它们是我在任何涉及数据库的项目中经常使用的两个。

我不会使用单例作为数据库模式。不过,我可能会用它来存储来自数据库的静态数据。

【讨论】:

  • 如果数据库设计模式“依赖于数据库”,那么它就不是一个好的模式。这种模式的重点是将数据库访问/实现/使用与业务需求分离。存储库模式为您提供了一个与数据库交互的接口,而无需为您提供它的具体实现。
【解决方案2】:

数据访问对象是用于访问数据库数据的核心 J2EE 模式,请参阅http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

【讨论】:

    【解决方案3】:

    在过去,我使用数据库的静态类和它的表实现了一个数据库“抽象”。这导致了完全的混乱和大量的工作。这绝对不是要走的路。

    由于您使用的是 Java,因此您应该研究一下 JPA。将 JPA 与存储库模式一起使用就像一种魅力。您将实体(域模型)映射到数据库表,而不必编写大量查询。如果您要编写查询,您将编写 JQL 查询。这些是抽象查询,与数据库无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      相关资源
      最近更新 更多