读取和写入 LOB
每次读取、创建或更新包含 BLOB 的对象时,会将 BLOB 读取或写入为字节数组或序列化对象。如果使用 LobLocator 对 BLOB 进行模块化,则每次读取/写入仅检索 LOB Locator,并且需要执行第二步来检索或存储 LOB。StandardPersistenceManager 提供 getLob() 和 updateLob() 以执行这些操作。
请注意序列化到数据库中的对象的类型。如果 Java 类文件是使用可能的更改重新编译的,或者有时只是使用不同的编译器,则使用默认 Java 序列化特别容易中断。执行编程以允许序列化表示形式的向上兼容性非常困难。一种技术如下所示:
1. 使类可外部化,这也有助于提高性能。
2. 指定固定的 serialVersionUID 值。
3. 在对象流上放置内部版本号,并处理代码中的版本更改
有关此技术的示例,请参阅代码生成的可外部化业务类。缺点是所有子类现在都可以外部化,并且需要 readExternal 和 writeExternal 方法。如果与类层次结构的独立性很重要,则可以对序列化使用相同类型的技术 (修复 serialVersionUID 并实现 read/writeObject)。
这对您有帮助吗?