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./jh/26/395684.html? 2. Hibernate serialization :?http://java./Hibernate/31609.html |
|
来自: windxn > 《Java技术指南》