2

我已经对此感到困惑了一段时间。我的问题是,面向对象编程和数据库管理如何协同工作?我似乎找不到太多关于两者如何协同工作的信息。我想做一个数据库驱动的应用程序,我目前有一本关于面向对象编程的好书,其中有一个使用面向对象方法创建应用程序的过程,但是当我们开始涉及数据库时我只是感到困惑。

类图本质上是数据库设计吗?我们还能像使用关系数据库一样使用 SQL 查询数据库吗?数据文件如何存储以及以什么格式存储?类是否等同于表,它们的属性是否等同于列?

在此先感谢我感谢任何回复,并且我确实尝试了谷歌和提供的类似问题。

4

3 回答 3

2

似乎您遇到了Object Relational Impedence Mismatch

类图本质上是数据库设计吗?

不,不是,数据库模型和您的 OO 模型可能非常不同。

我们还能像使用关系数据库一样使用 SQL 查询数据库吗?

是的,您可以,但是您会将数据更改为对象,请参阅存储库模式了解如何执行此操作。

数据文件如何存储以及以什么格式存储?

几十年来,RDBS 存储数据的方式和格式相同,我不会建议您看看日益流行的NoSQL系统。

类是否等同于表,它们的属性是否等同于列?

不一定,您会将表中的数据映射到 OO 设计中的对象。有时他们可能几乎直接映射。例如,您还可以将 3 个表中的数据映射到一个对象。

于 2013-01-24T10:11:10.400 回答
0

ORM(Object Relational Mapping) in Hibernate是您澄清的好例子!

对于像这样的问题:Is a class diagram essentially a database design? and Are classes the equivalent to tables and their attributes equivalent to columns?..是的,让我和你解释一个例子:

class Department
{
     private int departmentNo;
     private int departmentName;
     private Set<Student> students;
}

class Student
{
    private int studentId;
    private int studentName;
    private Department department;
}

使用这些实体, Two database tables将使用 hibernate 生成。默认情况下,

Department: departmentno(int),departmentname(varchar(255))
Student: studentid(int), studentname(varchar(255)),departmentno(int) [foreign key]

被生成。

可以通过以下方式检索特定部门的学生列表,

Department department = ......; // hibernate related thing which hit the database
Set<Student> = department.getStudents();
于 2013-01-24T10:25:46.320 回答
0

我已经读了好几年了。我喜欢 OOP 方法,而且我还开发数据库驱动的应用程序。以下是我的发现:

  1. 从某种意义上说,OOP 和数据模型是两个独立的世界。这是因为在采用 OOP 之前,RDBMS 已经存在多年。

  2. OOP 专注于类和对象;RDBMS 专注于数据存储和检索。

  3. 如果您花时间构建对表建模的类,那很好,但这会增加应用程序的性能开销并增加开发时间。

我对 .Net 开发人员的建议:使用 System.Data 命名空间下的 .Net 框架已经提供的类。对这些类的深入了解可以将代码的大小降至最低。仅在绝对必要时创建一些自定义类

于 2015-06-02T15:41:15.640 回答