愚蠢的问题:我想知道是否可以像使用JPA一样使用JDBC来保存POJO?
假设我有一个包含一个字段
的类“A”public class A implements Serializable{
public String someString = "asd";
}
现在假设我的实例为A
(A myA = new A();
)。
我的问题是:是否可以使用JDBC保留“myA”,或者我是否必须保留String。或者当我想加载“myA”时,我可以加载实例“myA”,还是必须通过加载String并使用加载的String创建一个新的实例表单A来构建“myA”。
答案 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的工作比使用字符串要慢得多。
希望这有帮助