我需要一个功能,如果用户愿意,用户可以取消正在运行的查询,所以我认为我会序列化hibernate会话,然后反序列化它以取消该特定查询。
所以我做了类似的事情:
以下是我使用的代码:
ByteArrayInputStream bis = new ByteArrayInputStream(byteArray);
ObjectInput in = new ObjectInputStream(bis);
Object o = in.readObject();
Session ss = (Session) o;
但是这给了我一个例外 readObject():
java.io.InvalidObjectException: could not resolve session factory during session deserialization [uuid=95d6a048-677b-42f0-9b9f-7e62fd68b533, name=null]
所以我想知道,如果甚至可以序列化和反序列化一个hibernate会话对象。
编辑: 我也找到了this,但不确定这是否正确!
答案 0 :(得分:3)
不可能使用hibernate会话来获取与数据库的物理连接,这意味着涉及网络层。它使用套接字,网络堆栈,底层硬件 - 所有这些都是系统特定的,不受JVM管理。
序列化只有在处理数据时才有用。