CRUD有哪些好的设计模式?

时间:2010-04-03 07:33:21

标签: design-patterns

我正在处理许多可以创建,读取,更新和删除的数据实体,我发现自己编写的代码大致相同。例如,我有时需要将数据输出为JSON,有时以表格格式输出。我发现自己编写了两种不同类型的视图来导出数据。此外,在DB中创建这些实体通常只有SQL语句和输入参数不同。

我正在考虑创建一种策略模式来表示不同的“上下文”。例如,AJAX上下文的read()方法将返回数据为JSON。但是,我想知道其他人是否事先处理过这个问题,并且想知道CRUD操作通常使用什么样的设计模式。

编辑:一个注意事项是,有时复合实体用于构成一个整体;例如,一个位置可以有许多描述,每种支持语言都有一个描述。

3 个答案:

答案 0 :(得分:4)

CRUD没有一种模式,有许多重叠/竞争模式。这些CRUD模式的最佳来源之一是:

Martin Fowler's Patterns of Enterprise Application Architecture

一般来说,解决这个特定问题的最好方法是使用ORM(假设一个关系数据存储,在这种情况下看似安全的假设):

http://en.wikipedia.org/wiki/Object-relational_mapping

就通过视图公开您的对象而言,还有一些框架可以帮助解决这个问题,但这些框架特定于您未编写的编码环境。

答案 1 :(得分:2)

不是真正的模式答案 - 抱歉。但我建议使用ORM系统(存储库模式)作为数据库接口。 JPAHibernateiBatis等。您不再需要编写任何SQL。

如果要最小化必须编写的代码量,请尝试使用Grails等框架。 (编写一个包含约30行代码的完整CRUD网站。)您不再需要编写任何样板代码。

答案 2 :(得分:1)

检查ODATA(http://www.odata.org) - 这对于基于HTTP的CRUD具有相当不错的设置 - 包括将批量更新推送到服务器的机制。