如何在JavaDB Derby数据库中存储Java对象?

时间:2014-12-11 06:12:35

标签: java database jdbc derby javadb

我有一个java类来存储电影/电视/ DVD索引的媒体对象。我计划尝试将这些对象存储在JavaDB数据库中。它将有数千个条目。

我已经阅读了有关序列化对象的内容,还有一些关于hibernate和持久性API的内容,尽管我并不真正了解它们是如何工作的。我只是对我到底应该学习怎么做感到困惑。我是否应该担心这些问题,或者只是创建一个包含VARCHAR列中所有信息的表?

任何人都可以向我提供有关他们将用于将所有这些信息存储到数据库中的系统的任何提示吗?或者也许只是一些关于你会做什么的一般指示,以及为什么?

显然,我是数据库的新手。我刚刚完成this codejava tutorial并且可以成功创建/连接到JavaDB数据库。

谢谢!

public class Media {

    File file_location;
    String filename;
    Date date;
    int hres;
    int vres;
    boolean has_tbn;
    File tbnloc;
    boolean has_ss;
    File ssloc;
    int length;
    String[] actors;
    String[] tags;
    boolean HD;
    long filesize;
    String md5 = "origMD5";

    Media(File thefile) {
        this.file_location = thefile;
    }

    Media(String thefile) {
        this.file_location = new File(thefile);
    }
// snipped getters and setters
}

2 个答案:

答案 0 :(得分:3)

ORM - 对象关系映射是Hibernate和其他框架用于将数据存储到数据库中的一个概念。这是一种更容易保存数据的选项。

使用Hibernate Framework让您有机会考虑像对象本身(Media对象)这样的数据库行,此行的列是Media对象字段。通过使用Pojo类,您可以访问所有这些字段并根据需要设置/获取字段,并使用Hibernate API将对象持久保存到数据库中。

根据这个概念,您可以选择使用Hibernate Framework或使用默认的JDBC。

关于hibernate的一个很好的教程,你可以在这里找到:http://www.tutorialspoint.com/hibernate/index.htm

答案 1 :(得分:1)

我将抓住机会并说一些可能有点争议的事情:你的Media类似乎不是一个程序操作的好抽象。相反,它似乎只是一个数据集合。您需要getter和setter(适用于所有?)成员的事实也指向了这个方向。

这是我的(有争议的)建议:当真的不是时,不要试图将媒体变成一个对象。只需为您的数据创建一个ER(实体 - 关系)模型,并创建要匹配的数据库表。然后找出您需要/想要支持哪些查询并创建必要的索引以加快速度。然后在您的应用程序中创建类/对象以支持查询/操作。

这个想法,你的程序对象应该应该模拟在大量OO文献中如此受欢迎的现实世界对象是恕我直言错误,除非你的程序是一种模拟。但是99%的程序都不是,它们需要支持实际工作的对象(数据+操作)。这通常类似于从数据库中获取数据,将其复制到gui模型中,然后重新显示。