打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
转:POJO实现Serializable接口的目的是什么?

hibernate中POJO不实现Serializable接口吗一样可以实现DAO,但是为什么一些经典例子中总是实现这个接口呢?这样做的目的是什么,有什么好处?实现这个接口时serialVersionUID应该怎么设置?


答:
不一定。
搂主知道DTO的概念么?Data transfer Object. 这种对象是用来在网络上(不同的JVM)被传递的对象,比如Servlet调用EJB,而Servlet与EJB不在同一个JVM中,但是却需要在二者之间传递这个对象。
我们知道,不同JVM跨网络传输对象,需要将对象序列化(Serialization)。楼主如果使用Hibernate的POJO如果是需要跨网络传输的此对象(比如Servlet调用一个业务bean,返回了此POJO,而Servlet与业务bean是分布式的),这种情况下,需要Serialization,如果在同一个JVM中调用,可不必序列化。


请问:对于serialVersionUID我全部设置成为1L有没有影响?
其次我问一下序列化是不是需要额外得代价?


楼主,正确的解释应该是这样的:
Notice our POJO class implements thejava.io.Serializable interface. This is required of you want the class to be cached by a second-level caching service.
在Hibernate中,如果你用UserType,则所有的 POJO必须实现java.io.Serializable接口,而CompositeUserType接口则不必实现这个接口,这是因为CompositeUserType接口提供了assemble(...)和disassemble(...)来管理缓冲Cache。

楼上说的只是Hibernate教程上浅层次的Hibernate中的表面意思。
当然,这也是一个方面,这里边之所以要Serialization,为了可以将二级缓存内容做持久化,以便在意外之后可以恢复缓存信息。而如果POJO需要在分布式环境下传递,也是必须Serialization的。

java中看到Serialization的第一个反应就应该持久化,网络传输。Hibernate只是一个ORM工具而已,它的POJO用到Serialization自然也是要一样的原因。

如果Hibernate的POJO要在分布式环境下进行传递的话,也必须要Serialization 的

送上两个链接补补基础吧:
1.javaSerialization基础 :?http://www.chinaunix.net/jh/26/395684.html?
2. Hibernate serialization :?http://java.chinaitlab.com/Hibernate/31609.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
序列化
Java序列化之Serializable
深入浅出.NET中的序列化(Serialization)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)
浅谈OSIV与泛型DAO模式 - java专题论坛-java.csecs.com
Hibernate回调与拦截机制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服