我已经阅读了一些关于hibernate& amp;实体序列化,但仍然无法理解为什么我的应用程序工作,尽管事实上我没有实现Serializable。
“如果实体实例按值传递为分离对象,则为 通过会话bean的远程业务接口,该类必须 实现Serializable接口。“(c)
我有什么: 使用Hibernate的Simple Spring MVC项目。我有MyEntity数据表,以及用户从我的应用程序编辑它的功能。
然后在表单中设置所有需要的参数
然后将更新的myEntity发送到服务器
问题: 据我了解,用户在填写表单时将拥有myEntity对象。所以,myEntity处于分离状态。 但是,MyEntity没有实现Serializable
我的问题:
为什么没有MyEntity可以实现Serializable?
我对所有实体都有相同的方案(如上所述)。我是否需要实现Serializable?
答案 0 :(得分:9)
Hibernate不要求实体为Serializable
。
“如果实体实例通过值作为分离对象传递,例如通过会话bean的远程业务接口,则该类必须实现Serializable接口。” (c)中
这句话是混淆的常见原因,因为它与Hibernate无关。实际上,这意味着如果您计划在需要可序列化的上下文中使用您的实体,它们应该是Serializable
。
由于Spring MVC也不要求模型属性为Serializable
(除非您希望利用会话持久性利用@SessionAttributes
中存储在会话中的属性),因此你不需要担心你的情况下的可串行化。
答案 1 :(得分:1)
为什么没有MyEntity可以实现Serializable?
Hibernate不要求实体序列化。仅当您要通过电线(例如,远程接口)
发送分离的对象时才需要它我对所有实体都有相同的方案(如上所述)。我 需要实现Serializable?
是的,如果您想通过网络发送此对象。否则否。