为什么POJO类需要实现Serializable接口?

8
为什么POJO Java类必须实现Serializable接口?如果我不实现Serializable会发生什么?
@Entity
@Table(name="Customer")
public class Customer implements Serializable {

    private static final long serialVersionUID = -5294188737237640015L;
    /**
     * Holds Customer id of the customer
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "cust_id")
    private int Custid;

    /** Holds first Name of the customer*/
    @Column(name = "first_name")
    private String firstName;

    /** Holds last Name of the customer */
    @Column(name = "last_name")
    private String lastName;

    /** Holds Customer mobile number of customer*/
    @Column(name = "cust_mobile")
    private long MobileNo;

    /**Holds customer address of customer*/
    @Column(name = "cust_address")

7
一个POJO不必实现Serializable接口,但JavaBean需要实现。 - Stultuske
POJO不是必须的,只有在必要的情况下才需要这样做,例如如果您想通过其他系统共享此对象。 - exoddus
2个回答

10

首先,这已不再是一个普通的Java对象,因为它有了注释。

但基于你的前提,如果这些POJOs打算用于分布式系统和使用缓存、刷新到文件并读回的系统中,则需要实现Serializable接口。

大多数JPA实现确实以分布式方式运行,并使用缓存,因此这个POJO需要实现Serializable接口。

如需更多信息,请阅读此讨论。


0

“POJO”这个术语是为了区分轻量级和重量级EJB概念而发明的。

POJO不需要您实现任何内容。

它用于不必实现重量级EJB接口的对象。

随着JEE5的引入和轻量级注释用于定义EJB的后续使用,该术语已经过时。

从我的经验来看,我认为这个术语现在已经成为有毒的,不应再使用。 现在它只是误解和不必要讨论的普遍来源。

顺便说一下:我相信您指的是“JavaBeans”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接