什么设计模式对于与数据库通信很有用

时间:2013-10-21 02:17:16

标签: java database design-patterns

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

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

我在考虑使用Singleton,因此我只为DatabaseController提供一个入口点。

是否有优秀的设计模式,允许其他类与DatabaseController通信,并具有与数据库通信的功能?

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

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

[编辑] 我正在寻找自己写的东西,可能正在寻找一个教程和Java。

3 个答案:

答案 0 :(得分:3)

取决于我想的数据库,但请查看实体框架以及数据存储库模式。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

过去,我使用数据库及其表的静态类实现了数据库“抽象”。这导致了一个完整的混乱和大量的工作。这绝对不是可行的方法。

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