我可以序列化一个hibernate会话,然后反序列化它以获取会话对象吗?

时间:2015-12-07 06:24:59

标签: java hibernate session serialization

我需要一个功能,如果用户愿意,用户可以取消正在运行的查询,所以我认为我会序列化hibernate会话,然后反序列化它以取消该特定查询。

所以我做了类似的事情:

  1. 在数据库中序列化并设置它。
  2. 取回它,然后调用 session.cancelQuery()
  3. 以下是我使用的代码:

    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,但不确定这是否正确!

1 个答案:

答案 0 :(得分:3)

不可能使用hibernate会话来获取与数据库的物理连接,这意味着涉及网络层。它使用套接字,网络堆栈,底层硬件 - 所有这些都是系统特定的,不受JVM管理。

序列化只有在处理数据时才有用。