2010-03-16 49 views
1

我有DB結構如下:ORM模型和DAO在我的具體情況

表STUDENT(比如ID,姓等)

表STUDENT_PROPERTIES(比如,name_of_the_property:焦炭,value_of_the_property:焦炭,student_id數據:FK)

表課程(ID,名稱statusofcourse_id)

表STATUSOFSOMETHING(ID,name_of_status:字符( '有效', '無效', '暫停' 等))

表STUDENT_COURSE(student_id數據,COURSE_ID,statusofsomething_id)

讓我們試着拿起域對象在我的數據庫:

學生和課程的主要實體。 學生有他參加的課程列表,他也有一個屬性列表,這是所有這個學生。

接下來,課程實體。它可能包含一個參加它的學生名單。

但事實上,整個結構是這樣的:出發點是學生,與它的PK 我們可以看看他的屬性的列表, 接下來我們來看看進入STUDENT_COURSE並提取課程實體的兩個FK和還結合的狀態 ,它看起來像「學生名爲BLA BLA,與他的所有屬性, 參加數學和它的狀態是‘有效’。

現在,報價

1)每個DAO實例負責一個主域對象或實體,如果域對象具有獨立的生命週期,它應該有它自己的DAO。

2)DAO負責創建,讀取(通過主鍵),更新和刪除 - 即CRUD - 在域對象上。

現在,第一個問題是 我的情況是什麼實體? 學生,課程,學生課程,狀態=除StudentProperties之外的所有課程? 我是否必須爲每個對象創建一個單獨的DAO?

回答

1

,您將需要創建的實體是:

  • 學生
  • StudentProperties
  • CourseStatus(不是真的有必要,你可以在使用枚舉場場代替)

StudentCourse不需要創建,因爲您可以在Hibernate中使用多對多映射會在你的學生對象中給你一套很好的課程。

這裏有一個關於Hibernate映射一個偉大的教程已經做了你需要的幾乎一切: http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html

+0

@詹姆斯古德溫也許,但它是確定這不僅有student_id數據和COURSE_ID,而且第三場,STATUS_ID那在表中定義一行?事實上,該狀態字段不屬於課程,它完全獨立存在。只有它在STUDENT_COURSE中的價值纔有意義。 – EugeneP