2011-12-09 43 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

谢谢,你说得对。我本来希望接受这两个答案,但我选择与其他答案一起去。 –

相关问题