2011-12-09 81 views
0

我正在嘗試開發一個小型基於插件的培訓計算器,作爲一個家庭項目(設計時考慮到了體重訓練)使用Java。什麼樣的數據庫適合存儲我的對象?

應用程序核心提供某些插件可能與之連接的服務。其中之一就是所謂的「數據服務」,它讓插件存儲數據並檢索它們。現在,我覺得我的對象構建的方式與關係數據庫甚至對象關係數據庫無法很好地匹配。但是我希望能夠進行一些搜索和查詢,如果我的對象被存儲爲二進制文件,這可能是不可行或容易做到的。

問題是我想存儲單個條目(LogEntry對象),它是由一個或多個對象組件組成的對象,該對象又由一個或多個對象組件組成。

我的對象是這樣的(僞):

// This is the plugin itself 
class Log 
{ 
    member PersonalStats; 
    member LogBook; // ideally, this would be a table with the log entries 

    ... // methods 
} 

/* ================= */ 

// part of Log class 
class PersonalStats 
{ 
    member Date birthdate; 
    ... // etc., all the personal stuff 

    ... // methods 
} 

// part of Log class 
class LogBook 
{ 
    member List<LogEntry> entries; 

    ... // methods 
} 

/* ================= */ 

// an object of this class should represent one dataset in LogBook 
class LogEntry 
{ 
    member List<ExerciseDetail> exercises; 
    member String comments; 
    member Date date; 

    ... // methods 
} 

/* ================= */ 

class ExerciseDetail 
{ 
    member Exercise exercise; 
    member List<SetSchema> warmUps; 
    member SetSchema workSet; 

    ... // methods 
} 

class Exercise 
{ 
    member String name; 

    ... // methods 
} 

class SetSchema 
{ 
    member int sets; 
    member int reps; 
    member double weight; 

    ... // methods 
} 

我的問題是:爲了使核心應用程序能夠提供數據庫支持,什麼樣的數據庫管理系統將適用於這種數據模式?我希望它是非語言特定的。

但我不確定,如果數據庫是要走的路,但。所以,如果您有任何建議,請隨時分享。

回答

1

對於相關實體,這是一個很好的例子。一些明顯的關係是

  • Log --> One To One --> PersonalStats, LogBook
  • LogBook --> One To Many --> LogEntry
  • LogEntry--> One To One --> ExerciseDetail
  • ExerciseDetail --> One To One --> Exercise
  • ExerciseDetail --> One To Many -->SetSchema

你可以巧妙地這些實體間關係映射到數據庫表和湯姆的建議,使用ANy OR Mapping t類似Hibernate的ools。使用spring as a integration layer

+0

謝謝你的回答,它幫助了我。我在某些細節上有點過於拘謹,所以我沒有注意到這一點。 –

1

有時候,答案就在這個問題上。問題是你想把你的對象存儲爲一個巨大的表,這是問題所在。

如果您將每個類映射到一個表中,看起來一切都會很順利。

你應該真的在春天看待hibernate。我已經啓動了許多應用程序,並使用這種組合快速啓動並運行它們。

+0

謝謝,你說得對。我本來希望接受這兩個答案,但我選擇與其他答案一起去。 –

相關問題