如果不使用 ORM,以 OOP 方式设计应用程序有什么意义?
What's the point of designing an application in an OOP way if an ORM is not used?
假设在应用程序中有特定的 类 说 'Student' 'Location' 'City' 等等
class Student {
String name;
int age;
Location location;
}
class Location {
City city;
String country;
}
class City {
String cityName;
int cityCode;
}
这只是一个示例,显示 类(对象) 包含对其他 类.
的引用
所以现在如果使用ORM(如hibernate),这种数据可以直接保存:
save(student);
鉴于对象 'student' 已正确定义(就像它包含数据)。
现在这很简单方便。
但是说我们出于某些原因没有使用ORM,那么
1.We从客户端获取数据
2.Fill 包含用户数据的对象(或类似的东西)(所有这些都发生在内存中)
3.Now 我们再次分解数据以将其保存到数据库(使用 SQL 查询)
例如包含
之类的查询
- student.location.city.cityName
- student.location.city.cityCode 等等
现在这不是为了做 it.like...
而做面向对象的事情吗
1.Creating 内存中的对象。
2.Breaking 在保存到数据库之前关闭对象。
这件事让我困惑了很久。非常感谢任何见解或帮助:)
- 您的面向对象编程语言使用对象。
- 您的数据库使用关系数据。
由于这种不匹配,您将始终必须将对象映射到关系数据,即使您不选择使用 ORM 工具也是如此。
您可能对 Active-record pattern 感兴趣。每行都会有一个关联的对象引用,但您必须自己解决对象关联(例如,多对一,一对多)。
假设在应用程序中有特定的 类 说 'Student' 'Location' 'City' 等等
class Student {
String name;
int age;
Location location;
}
class Location {
City city;
String country;
}
class City {
String cityName;
int cityCode;
}
这只是一个示例,显示 类(对象) 包含对其他 类.
的引用所以现在如果使用ORM(如hibernate),这种数据可以直接保存:
save(student);
鉴于对象 'student' 已正确定义(就像它包含数据)。 现在这很简单方便。
但是说我们出于某些原因没有使用ORM,那么
1.We从客户端获取数据
2.Fill 包含用户数据的对象(或类似的东西)(所有这些都发生在内存中)
3.Now 我们再次分解数据以将其保存到数据库(使用 SQL 查询) 例如包含
之类的查询- student.location.city.cityName
- student.location.city.cityCode 等等
现在这不是为了做 it.like...
而做面向对象的事情吗1.Creating 内存中的对象。
2.Breaking 在保存到数据库之前关闭对象。
这件事让我困惑了很久。非常感谢任何见解或帮助:)
- 您的面向对象编程语言使用对象。
- 您的数据库使用关系数据。
由于这种不匹配,您将始终必须将对象映射到关系数据,即使您不选择使用 ORM 工具也是如此。
您可能对 Active-record pattern 感兴趣。每行都会有一个关联的对象引用,但您必须自己解决对象关联(例如,多对一,一对多)。