假设应用程序中有特定的类,例如“学生”“位置”“城市”等。
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.我们从客户端获取数据
2.用用户的数据(或类似的东西)填充对象(所有这些都发生在内存中)
3.现在我们再次分解数据并将其保存到数据库(使用SQL查询) 例如包含诸如
之类的查询- student.location.city.cityName
- student.location.city.cityCode 等
现在这不就像只是为了做而做面向对象的事情吗?就像...
1.在内存中创建对象。
2.在保存到数据库之前分解对象。
这件事困扰了我很长时间。非常感谢任何见解或帮助:)
最佳答案
- 您的面向对象编程语言使用对象。
- 您的数据库使用关系数据。
由于这种不匹配,即使您不选择使用 ORM 工具,您也始终必须将对象映射到关系数据。
您可能对 Active-record pattern 感兴趣。每行都有一个关联的对象引用,但您必须自己解析对象关联(例如多对一、一对多)。
关于java - 如果不使用 ORM,那么以 OOP 方式设计应用程序还有什么意义呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176571/