CRUD的意思

时间:2014-03-02 23:37:51

标签: oop crud

首字母缩略词CRUD(创建,读取,更新,删除)在面向对象编程中很常见。作为OOP的新手,我想知道这个功能的背景。使用CRUD方法构建类时,这些方法是应该创建,读取,更新,删除对象属性还是应该对数据库数据或某些组合执行这些操作?

4 个答案:

答案 0 :(得分:2)

CRUD与面向对象编程无关。它通常都与数据库操作有关。它有时也用于HTTP请求。

来自wikipedia

Operation           SQL     HTTP
Create              INSERT  PUT / POST
Read (Retrieve)     SELECT  GET
Update (Modify)     UPDATE  PUT / PATCH
Delete (Destroy)    DELETE  DELETE

你在OOP上下文中听说过,因为这些人你花时间使用像Java这样的OOP语言。

作为证据,您可以找到a CRUD implementation in Haskell here

答案 1 :(得分:1)

解释CRUD:

  • create:此部分引用“创建”新数据对象供您使用的构造函数和工厂方法,或者将新记录添加到数据库。
  • 读取:这些是代码中的getter方法。由于您不应该在类外部公开内部变量,因此您需要提供getter,以便其他代码可以获取有关对象状态的信息。这也是读取各种数据库条目的字段。
  • update:这些是setter方法,对于其他代码也需要能够修改对象或数据库条目的实例的getter而言是免费的。
  • destroy:这是指对象的析构函数,即释放任何已分配资源的代码段,确保可以干净地处理对象,或者从数据库中删除记录。

面向对象编程和数据库之间的联系是数据库条目在相当基本的意义上是对象的基本思想。数据库中的每个条目都有各种字段,这些字段直接对应于面向对象语言中对象的字段。

答案 2 :(得分:1)

您不应该使用CRUD方法构建类。

您应该使用表示在建模域的上下文中表示的对象的行为的方法构建一个类。使用像CRUD这样的通用方法构建一个类将是一个OOP设计气味。

例如,这是错误的(如此错误)

class Person(object):
    def __init__(name, age, location)
        self.name = name
        self.age = age
        self.location = location

    def get_name(self):
        return self.name

    def update_name(self, new_name):
        self.name = new_name

    def delete_name(self):
        self.name = None

这些方法与 Person 行为无关。它将Person变成了一个愚蠢的数据对象,这与面向对象的设计试图做的相反。

如果您的person对象必须与数据库通信以保持自身,则应该从公共接口隐藏此功能。更好的选择是不首先将对象绑定到数据库,在域中使用Plain Old Objects并使用其他方法写入数据库。

答案 3 :(得分:0)

大多数情况下,我会对存储在数据库中的数据使用crud。我将亲自编写几个存储过程来执行这些功能。

CRUD也是声明变量的基本操作。例如,在C#中,您可以声明变量List<Of T>,然后在将其上传到数据库之前对其执行CRUD操作。