Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
可序列化性
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
为了方便起见,许多 jOOQ 类型扩展并实现了 java.io.Serializable
接口。但是请注意,jOOQ 不会对序列化格式及其向后兼容的演变做出任何保证。这意味着,虽然当两个使用完全相同的 jOOQ 版本的进程通过网络传输 jOOQ 状态时,通常可以安全地依赖 jOOQ 类型的可序列化性,但依赖于持久化序列化的 jOOQ 状态以便稍后再次反序列化是不安全的 - 即使在补丁版本升级之后!
与 Java 序列化一样,如果您想要可靠的 Java 对象序列化,请使用您自己的序列化协议,或使用 官方导出格式之一。
哪些类型是可序列化的?
任何 jOOQ 对象中唯一瞬态的、不可序列化的元素是 Configuration 的底层 java.sql.Connection
。当您想在反序列化后执行查询,或者当您想存储/刷新/删除 Updatable Records 时,您可能需要将它们“重新连接”到 Configuration
// Deserialise a SELECT statement ObjectInputStream in = new ObjectInputStream(...); Select<?> select = (Select<?>) in.readObject(); // This will throw a DetachedException: select.execute(); // In order to execute the above select, attach it first DSLContext create = DSL.using(connection, SQLDialect.ORACLE); create.attach(select);
自动附加 QueryParts
自动附加 QueryParts 的另一种方法,或者说是随意为它们提供新的 java.sql.Connection
的方法,是挂钩到 Execute Listener 支持。有关这方面的更多详细信息,请参见手册中关于 ExecuteListeners 的章节
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!