2

愚蠢的问题:我想知道是否可以像使用 JPA 一样使用 JDBC 持久化 POJO?

假设我有包含一个字段的“A”类

public class A implements Serializable{

    public String someString = "asd";
}

现在假设我有一个A( A myA = new A();) 的实例。

我的问题是:是否可以使用 JDBC 保留“myA”,或者我是否必须保留字符串。或者当我想加载“myA”时,我可以加载实例“myA”,还是必须通过加载字符串来构建“myA”并使用加载的字符串创建一个新的实例表单 A。

4

3 回答 3

2

您可以将序列化的 Java 对象存储到数据库中;例如,通过使用 Blob 类型。

但这通常不是一个好主意:

  • 执行 SQL 查询以任何重要的方式测试序列化对象的状态是不切实际的。

  • 序列化的对象往往对对象代码的变化很敏感。处理这个可能会很尴尬,不处理它会在数据库中留下无法再反序列化的序列化对象。

如果要将 POJO 持久化到关系数据库,最好使用对象-关系映射,例如 JPA 或 Hibernate。

于 2012-11-18T14:09:26.790 回答
1

您将不得不以某种方式进行映射(在持久化和检索之前)。

一种方法是创建我喜欢调用 fillX 的方法,您可以在其中手动进行映射(java 代码)或创建某种约定,例如类中的名称和 DB 中的列。

例如,这在Spring JDBC中做得很好。在文档中,您可以看到谁做了什么。

在大多数情况下,使用 JPA 之类的对象关系映射将是可行的方法,但这并不总是一种选择。

于 2012-11-18T14:05:14.120 回答
0

通常,您可以使用 JDBC 持久化字节流。在这种情况下,您应该使用 BLOB(如果它是文本流,则使用 CLOB)。

因此,如果您的 A 类真的实现了 Serializable 接口,您可以将其序列化为字节流并存储。

但是,我仍然建议您改为存储字符串。这是因为使用 BLOB/CLOB 的工作比使用字符串要慢得多。

希望这可以帮助

于 2012-11-18T13:59:11.067 回答