我需要一个适合与数据库通信的设计模式。
我想要一个由软件的不同子系统用来与数据库通信的对象。该对象将在函数中包含所有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。
答案 0 :(得分:3)
取决于我想的数据库,但请查看实体框架以及数据存储库模式。
它们是我在任何涉及数据库的项目中使用的两个。
我不会使用单例作为数据库模式。我可能会将它存储在来自数据库的静态数据中。
答案 1 :(得分:1)
数据访问对象是用于访问数据库数据的核心J2EE模式,请参阅http://www.oracle.com/technetwork/java/dataaccessobject-138824.html
答案 2 :(得分:0)
过去,我使用数据库及其表的静态类实现了数据库“抽象”。这导致了一个完整的混乱和大量的工作。这绝对不是可行的方法。
由于您使用的是Java,因此您应该查看JPA。将JPA与Repository模式一起使用就像魅力一样。您将实体(域模型)映射到数据库表,而不必编写大量查询。如果要编写查询,则需要编写JQL查询。这些是抽象查询,与数据库无关。