Hibernate实体可序列化

时间:2013-09-11 12:37:24

标签: spring hibernate serialization

我已经阅读了一些关于hibernate& amp;实体序列化,但仍然无法理解为什么我的应用程序工作,尽管事实上我没有实现Serializable。

  

“如果实体实例按值传递为分离对象,则为   通过会话bean的远程业务接口,该类必须   实现Serializable接口。“(c)

我有什么: 使用Hibernate的Simple Spring MVC项目。我有MyEntity数据表,以及用户从我的应用程序编辑它的功能。

  • 用户向getMyEntity()发出请求,并获取空的MyEntity对象
  • 然后在表单中设置所有需要的参数

  • 然后将更新的myEntity发送到服务器

问题: 据我了解,用户在填写表单时将拥有myEntity对象。所以,myEntity处于分离状态。 但是,MyEntity没有实现Serializable

我的问题:

  • 为什么没有MyEntity可以实现Serializable?

  • 我对所有实体都有相同的方案(如上所述)。我是否需要实现Serializable?

2 个答案:

答案 0 :(得分:9)

Hibernate不要求实体为Serializable

  

“如果实体实例通过值作为分离对象传递,例如通过会话bean的远程业务接口,则该类必须实现Serializable接口。” (c)中

这句话是混淆的常见原因,因为它与Hibernate无关。实际上,这意味着如果您计划在需要可序列化的上下文中使用您的实体,它们应该是Serializable

由于Spring MVC也不要求模型属性为Serializable(除非您希望利用会话持久性利用@SessionAttributes中存储在会话中的属性),因此你不需要担心你的情况下的可串行化。

答案 1 :(得分:1)

  

为什么没有MyEntity可以实现Serializable?

Hibernate不要求实体序列化。仅当您要通过电线(例如,远程接口)

发送分离的对象时才需要它
  

我对所有实体都有相同的方案(如上所述)。我   需要实现Serializable?

是的,如果您想通过网络发送此对象。否则否。