OJO(Plain Old Java Object)這個名字用來強調它是一個普通java對象,而不是一個特殊的對象。
2005年11月時,“POJO”主要用來指代那些沒用遵從特定的Java對象模型,約定或框架如EJB的Java對象.
理想地講,一個POJO是一個不受任何限制的Java對象(除了Java語言規範)。例如一個POJO不應該是
- 擴展預定的類,如 public class Foo extends javax.servlet.http.HttpServlet { ...
- 實現預定的接口,如 public class Bar implements javax.ejb.EntityBean { ...
- 包含預定的標註,如 @javax.ejb.Entity public class Baz{ ...
然後,因爲技術上的困難及其他原因,許多兼容POJO風格的軟件產品或框架事實上仍然要求使用預定的標註,譬如用於更方便的持久化。
JavaBean 是一種JAVA語言寫成的可重用組件。它的方法命名,構造及行爲必須符合特定的約定:
- 這個類必須有一個公共的缺省構造函數。
- 這個類的屬性使用getter和setter來訪問,其他方法遵從標準命名規範。
- 這個類應是可序列化的。
因爲這些要求主要是靠約定而不是靠實現接口,所以許多開發者把JavaBean看作遵從特定命名約定的POJO。
簡而言之,當一個Pojo可序列化,有一個無參的構造函數,使用getter和setter方法來訪問屬性時,他就是一個JavaBean。