是否可以使用JDBC持久化POJO?

时间:2012-11-18 13:57:54

标签: java jpa jdbc pojo persist

愚蠢的问题:我想知道是否可以像使用JPA一样使用JDBC来保存POJO?

假设我有一个包含一个字段

的类“A”
public class A implements Serializable{

    public String someString = "asd";
}

现在假设我的实例为AA myA = new A();)。

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

3 个答案:

答案 0 :(得分:2)

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

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

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

  • 序列化对象往往对对象代码中的更改敏感。处理这个问题可能很尴尬,而不处理它可能会让你在数据库中留下序列化的对象,你不能再反序列化。

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

答案 1 :(得分:1)

你必须以某种方式进行maping(在坚持和检索之前)。

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

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

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

答案 2 :(得分:0)

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

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

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

希望这有帮助