什么样的数据库适合存储我的对象?

时间:2011-12-09 11:58:01

标签: java database

我正在尝试使用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
}

我的问题是:为了使核心应用程序能够提供数据库支持,哪种DBMS适合这种数据模式?我希望它是非语言特定的。

我不确定,数据库是否可行。所以,如果您有任何建议,请随时分享。

2 个答案:

答案 0 :(得分:1)

有时,答案就在于问题。问题是你想把你的对象存储为一个巨大的表,这就是问题所在。

如果您将每个类映射到一个表,看起来一切都会很顺利。

你应该在春天看看hibernate。我已经启动了许多应用程序,并使用这种组合快速启动并运行。

答案 1 :(得分: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

您可以将这些实体关系整齐地映射到数据库表,并按照Thom的建议,使用ANy OR Mapping工具,如Hibernate。使用spring as a integration layer