1

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

我想要一个由软件的不同子系统用来与数据库通信的对象。该对象将在函数中包含所有 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 写。

4

3 回答 3

3

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

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

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

于 2013-10-21T02:19:07.673 回答
1

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

于 2013-10-21T02:41:27.003 回答
0

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

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

于 2013-10-21T17:55:51.977 回答