类设计时如何避免ORM情况?

Posted

技术标签:

【中文标题】类设计时如何避免ORM情况?【英文标题】:How to avoid ORM situation during class design? 【发布时间】:2018-03-29 09:55:42 【问题描述】:

目前,我正在做一个在线服务提供商的项目。但是我对班级设计感到很困惑。

我有像admincustomeragent这样的演员表和像cityservicescategorysub-categorygender这样的数据存储表。

我为admincustomeragent 创建了类。但是我应该为cityservicescategory 等表创建类似 ORM 设计的类吗?

为数据库中的每个表设置一个类是否很好?如果没有,请解释如何避免这种情况?我可以使用 enum 或 ArrayList 代替 class 来存储数据吗?

更新:- 我想为cityservicescategorysub-categorygender 执行 CRUD 操作

【问题讨论】:

将表与类混淆是一个坏主意,ORM 也是如此。为避免这种情况,请将 OOP 用于封装数据集而不是单个行的系统服务。 @reaanb 你能举个例子吗? 你没有说你的系统应该做什么。您可能有一个 CityForm 和一个 CityServicesReport 与 CityRepository 与 DBMS 交谈。 CityForm 可能会与其他存储库对话以获取查找列表的数据。 CityServicesReport 可能会与 ReportBuilder 对话。 【参考方案1】:

什么是类,基本上它将包含称为函数的属性和行为。 如果你真的有太多可重用的函数和属性,最好使用一个类,否则不要。 例子, 我有类 Vehicle 所以我知道它可以具有以下属性

 Class Vehicle 
  String color;
  int tier;
  function setTier()
   
  function getTier
   
 
 Class Bike implements Vehicle
   // you can use the attribute and function of the Class vehicle 
   //as it is parent class.
  

在这种情况下,您可以根据需要创建不同的类。

【讨论】:

但是如果我不想为每个表创建一个单独的类。你能举出双方的例子吗?我可以使用enumarray list 代替class 吗?

以上是关于类设计时如何避免ORM情况?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免特定类方法的 C++ 强制转换?设计模式?

orm的设计思路

Django ORM框架

Django框架:设计模型

JS设计模式策略模式

设计模式—策略模式 状态模式