2013-09-28 87 views
0

我需要Josh Long的書籍「Spring Recipes」的示例幫助。嘗試擴展Spring @ MVC章節中的代碼示例與持久層。作者硬編碼所有數據。我正在尋找像這樣的模型的最佳實踐解決方案,數據庫模式設計和基於DAO的POJO數據羣。我不想使用Hibernate或JPA,只是Spring。從關係數據庫填充Java對象模型

這裏的,我正在與(省略getter和setter方法,以減少空間)練習模式:

public class Reservation { 

    private String courtName; 
    private Date date; 
    private int hour; 
    private Player player; 
    private SportType sportType; 

} 

public class Player { 

    private String name; 
    private String phone; 

} 

public class SportType { 

    private int id; 
    private String name; 

} 

我做了3個DB表:預訂,球員,sport_type。對於每個表我有DAO類:ReservationDao,PlayerDao,SportTypeDao。那是正確的方法嗎?

這些類型的對象設計需要哪種數據庫關係?

如何在我的服務層中填充Reservation對象?我是否需要使用一個查詢加入一些連接,或者一個接一個地調用ReservationDao,PlayerDao和SportTypeDao方法以從數據庫中獲得單個預留行?

+1

如果你不打算使用ORM框架,你必須自己做。 –

+0

Sotirios是正確的,如果你不想使用ORM,你將不得不自己寫所有東西。有一個如何在Craig Larman的應用UML和模式中編寫ORM的例子。但是,只有在本書的較早版本中,在本書的新版本中,他將這一章帶出了「不要自己寫這個,使用像休眠或其他類似的ORM庫」的說法。 – hooknc

回答

1

我會給你一些也許有爭議的想法,但這是一個設計問題,所以它會被看好。

我不會做的DAO,僅做一個服務層和查詢所有三個表有多個內部聯接如果可能的話(也就是加入PlayerSportType)。原因是如果你打算使用直接的SQL,那麼你可能會利用這個數據庫(除了大多數ORM可能也會急於加載)。

因爲在手動SQL Web應用程序中,您需要根據不同的查詢和視圖創建許多複合像對象,我發現DAO間接完全浪費時間。如果你真的想要DAO OOP,你應該使用ORM代替。否則,想想手動SQL更多的是功能/程序編程風格,你總是在變換數據(DTO)。因此,你最好喜歡乾淨但乏味的(而不是乾的)轉換,而不是在整個地方推送域對象。

你也應該知道Spring有簡單的方法來map JDBC ResultSet to Java Bean s。