2013-01-24 41 views
2

我一直對此感到困惑。我的問題是,面向對象編程和數據庫管理如何協同工作?我似乎無法找到很多關於這兩者如何一起工作。我想製作一個數據庫驅動的應用程序,而且我目前有一本關於面向對象編程的書,它有一個使用面向對象方法創建應用程序的過程,但是當我們開始涉及數據庫時,我會感到困惑。面向對象程序設計和數據庫管理

本質上是一個類圖是一個數據庫設計?我們仍然可以像使用關係數據庫一樣使用SQL查詢數據庫嗎?數據文件如何存儲以及格式如何?類是否等同於表及其屬性等價於列?

在此先感謝,我很欣賞任何回覆,並且我嘗試了谷歌和提供的類似問題。

回答

2

看起來好像你正在對Object Relational Impedence Mismatch來臨。

是一類圖基本上是一個數據庫設計?

不,它不是,數據庫模型和你的OO模型可能會有很大的不同。

我們是否仍然可以用SQL查詢數據庫,就像我們用 關係數據庫一樣?

是的,你可以,但你會改變數據到對象,看到​​如何做到這一點。

數據文件如何存儲和以什麼格式?

相同的方式和格式RDBSs已經存儲了數十年的數據,我不會建議你看看NoSQL系統的日益普及。

是否將類等同於表及其屬性相當於將列 ?

不一定,您會將表中的數據映射到面向對象設計中的對象。有時他們可能會直接映射。例如,您也可以將3個表中的數據映射到一個對象。

+0

哈,我在寫同樣的中間!是的,這 - 並搜索ORM,試圖解決這個問題。 – halfer

+0

謝謝你爲我清理:) – MohsinG

+0

好吧,好東西。很高興有幫助。 –

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將與休眠生成。默認情況下,

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

生成。

特定部門的學生名單可通過retrived,

Department department = ......; // hibernate related thing which hit the database 
Set<Student> = department.getStudents(); 
0

我一直在閱讀這一段歲月。我喜歡面向對象的方法,我也開發數據庫驅動的應用程序。 這裏是我的發現:

  1. OOP和數據模型在一定意義上是兩個不同的世界。這是因爲RDBMS在OOP被採用之前已經存在了多年。

  2. OOP側重於類和對象; RDBMS專注於數據存儲和檢索。

  3. 如果您花時間建立可以建模您的表的類,那麼它很好,但是這會增加應用程序的性能開銷並增加開發時間。

我對於.NET開發者的建議: 使用那些已經被System.Data命名空間下的.NET Framework提供的類。熟悉這些類可以將代碼的大小降至最低。 當嚴格需要時只創建幾個自定義類