实体休眠实现系列化

实体休眠实现系列化

问题描述:

我用来读取编码最佳做法是休眠的实体不应该实施实体休眠实现系列化

了java.io.Serializable


我的想法只是为了更好的性能,以避免编译器处理实体的东西。我们应该使用DTO序列化来代替客户端和服务器通信。

是不是?

非常感谢!

这根本不是最佳实践,并且实现可序列化或不实现对性能没有任何影响。如果你想能够序列化你的实体,让它们实现Serializable。如果你不想,那么不要让它们实现Serializable。就这么简单。

当实体本身包含足够的信息时使用DTO被认为是反模式而不是被视为最佳实践。

+0

这个答案不正确。 Hibernate POJO不可序列化。请参阅下面的答案。 – Johanna 2013-05-06 07:29:56

Hibernate POJO不可序列化。这不是最佳实践或性能的问题。它根本不起作用。这就是为什么。

当您将POJO声明为可序列化时,您不会收到任何编译器错误。但在执行时,当您尝试序列化和反序列化对象时,您可能会遇到异常。

例如,当您使用GWT并在客户端和服务器之间发送数据时,会出现此问题。 Hibernate POJO的失败仅仅是因为它们不能被序列化。有关更详细的异常,请参阅“为何Hibernate对象在到达浏览器世界时无法理解”(位于页面中间之前)一章中的description of GWT with Hibernate一章。

+0

仅仅因为Hibernate POJO不能与GWT一起使用并不意味着它们不可序列化。 GWT是一个非常特殊的环境,Java代码被编译为JavaScript并在浏览器中运行。正常的应用程序(客户端是Java应用程序)可以很好地序列化Hibernate POJO。我已经在几个项目中将Hibernate POJOs序列化并通过网络发送到Swing应用程序。 – 2013-05-06 07:37:37

+0

GWT确实是一个特殊的环境,但它正是Hibernate对象的序列化,它不起作用。这就是为什么不推行Serializable的一般建议是正确的,为什么我不同意你的答案。当一个类实现Serializable时,它应该始终工作,而不仅仅是有时候。 – Johanna 2013-05-06 07:44:43

+0

它不起作用,因为对Java的GWT支持有限。即使是不可序列化的类也与GWT不兼容。甚至Google的一些Guava课程也与Google的GWT不兼容。 Hibernate POJOs的Java序列化确实可以正常工作。 GWT不是Java。 – 2013-05-06 07:58:08