hibernate中POJO一定要实现Serializable接口吗?这样做的目的是什么?

本文深入探讨了在Hibernate框架中使用对象序列化的原因、机制及应用场景,特别是当对象需要在网络环境中跨JVM传输时。通过实例解析,帮助开发者理解和掌握如何正确使用对象序列化来优化数据持久性和分布式环境下的对象传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【摘自】http://blog.knowsky.com/189048.htm

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

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

楼上:java中看到Serialization的第一个反应就应该持久化,网络传输。Hibernate只是一个ORM工具而已,它的POJO用到Serialization自然也是要一样的原因。学东西,要打好基础,要不维书,不维工具,有了基础什么都不怕,不要照本宣科,只知其一,不知其二;知其表,不知其根本。

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

————————————————————————————————————————————————









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值