【问题标题】:Implementing Serializable interface in hibernate entity class在hibernate实体类中实现Serializable接口
【发布时间】:2013-12-31 21:30:11
【问题描述】:

在hibernate实体类中实现Serializable接口有什么用? 那个界面什么都没有。

【问题讨论】:

    标签: java hibernate serializable


    【解决方案1】:

    它是Marker Interface,就像普通的interface.

    标记接口模式是计算机科学中的一种设计模式,用于提供有关对象的运行时类型信息的语言。它提供了一种将元数据与语言不明确支持此类元数据的类相关联的方法。

    Serializable案例java中

    public interface Serializable{
    }
    

    还有一些类

     public class someObje  implements Serializable{
    
      }
    

    而在其他地方Runtime 实现了像

    这样的对象
     if(someObje instnaceOf Serializable){
    
      //Hey this object can serialize you know. Grant security permission.
    
     }
    

    根据定义来回答您的问题

    序列化,其中对象可以表示为字节序列,其中包括对象的数据以及有关对象类型和存储在对象中的数据类型的信息。

    现在没有序列化,休眠实体如何在您的应用程序中移动 (Client <=> Server <=> Database)?

    而且还要检测类型。对于 ex in hibernate 查看 Seesion#get() 方法的方法签名

    Object get(Class clazz,
               **Serializable** id)
               throws HibernateException 
    

    注意:此理论不仅适用于需要序列化 ​​Object 的休眠实体。

    【讨论】:

    • 为什么休眠实体会被设置为Serializable 移动你的应用程序?
    • 例如,Client Server,因为它们是域对象??对我的帖子也进行了一些修改。
    • 我明白这一点。我的查询是针对休眠相关操作的。
    • 考虑一个小例子:没有序列化,域对象Idex :(setId(long))如何保存为数据库中的主键?如果您的对象不可序列化,java 不会将该信息提供给底层数据库。
    • 嗯,这是真的about the keys(主要的,复合的)但不是一般的实体。
    【解决方案2】:
    • 不确定为什么在 Hibernate 实体类中需要实现Serializable 接口。 Serializable POJO 是一种可以写入光盘通过网络传输的 POJO。
    • 如果您的 Hibernate 实体或 POJO 涉及其中任何一个,那么您只需实现 Serializable 接口。

    编辑: - 刚刚意识到键(主键、复合键)需要为Serializable,因为它们由持久Session 引用。 (Reference)

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 2019-10-09
      • 2012-08-03
      • 2011-10-26
      • 2011-09-26
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多