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

时间:2014-05-29 09:55:43

标签: java

为什么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")

2 个答案:

答案 0 :(得分:8)

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

但保留在您的前提下,如果要在分布式系统和系统中使用,那么可以在POJO中使用Serializable,它们使用缓存和刷新文件并回读。

大多数JPA实现都以分布式方式运行并使用缓存,因此需要此POJO来实现Serializable。

有关详细信息,请阅读此discussion

答案 1 :(得分:0)

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

POJO不要求你实施任何东西。

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

随着JEE5的引入以及随后使用轻量级注释来定义EJB,该术语已经过时了。

从我的到期,我会说这个词现在有毒,不应再使用了。 如今,它只是误解和不必要讨论的常见根源。

顺便说一句:我相信你指的是“JavaBeans”。