今天,我与组织中的另一位开发人员进行了激烈的辩论,讨论在何处以及如何向数据库映射的类中添加方法。我们使用sqlalchemy
,并且数据库模型中现有代码库的主要部分不过是一袋带有类名的映射属性,几乎是从数据库表到python对象的机械翻译。
在论点中,我的立场是使用ORM的主要价值是可以将低级行为和算法附加到映射的类。模型首先是类,其次是持久性的(使用文件系统中的xml可以持久性,您无需关心)。他的观点是,任何行为都根本就是“业务逻辑”,并且必然属于持久性模型之外的任何地方,而持久性模型仅用于数据库持久性。
我当然确实认为,什么是业务逻辑,应该分开,因为它与实现方法的较低层和域逻辑之间存在一定的区别,我认为这是模型类提供的抽象。在上一段中讨论过,但是我很难理解那是什么。我对API可能有什么更好的理解(在我们的例子中是HTTP“ ReSTful”),因为用户以他们想做的事情调用API,这与他们被允许做的事情以及如何做不同。完成。
tl; dr:使用ORM时,可以或应该在映射类的方法中进行哪些操作,应该忽略哪些内容以驻留在另一层抽象中?