2009-09-08 31 views

risposta

204

Un JavaBean segue alcune convenzioni. Denominazione Getter/setter, con un costruttore di default pubblico, serializzabile ecc. Vedere JavaBeans Conventions per ulteriori dettagli.

Un POJO (plain-old-Java-object) non è definito in modo rigoroso. È un oggetto Java che non ha l'obbligo di implementare una particolare interfaccia o derivare da una particolare classe base, o fare uso di particolari annotazioni per essere compatibile con un dato framework, e può essere qualsiasi arbitrario (spesso relativamente semplice) Oggetto Java

+32

Si noti che un JavaBean può essere e di solito è un POJO e molti sono in realtà POJO JavaBeans. –

+8

No, per la definizione di un POJO Bean Java * non * è un POJO perché per essere considerato un Java Bean una classe deve seguire determinate convenzioni di codifica (per esempioavere un costruttore no-arg, avere metodi che iniziano con le parole "get" e/o "set") o essere distribuiti con una classe BeanInfo. – Nat

+14

Poiché si tratta di * convenzioni *, penso che si possa affermare con successo che un bean può essere un POJO (ad esempio non si eredita da un'interfaccia JavaBean o simile) –

70

Tutti i JavaBeans sono POJO ma non tutti i POJO sono JavaBeans.

Un JavaBean è un oggetto Java che risponde ad alcune convenzioni di programmazione:

  • classe JavaBean deve implementare sia Serializable o Externalizable;
  • la classe JavaBean deve avere un costruttore no-arg pubblico;
  • tutte le proprietà JavaBean devono disporre di metodi di setter pubblico e getter (a seconda dei casi);
  • tutte le variabili di istanza JavaBean devono essere private.
+1

Pensavo che i POJO non possano implementare 'Serializable'. – naXa

+6

"la classe JavaBean deve avere un costruttore no-arg;" aggiungi anche ** public ** qui – radistao

+0

Un JavaBean è serializzabile ed è per questo che un JavaBean NON è un POJO. – karlihnos

15

Secondo Martin Fowler un POJO è un oggetto che incapsula Business Logic mentre una Bean (fatta eccezione per la definizione già detto in altre risposte) è poco più di un contenitore per contenere i dati e le operazioni disponibili per l'oggetto semplicemente imposta e ottieni dati.

Il termine fu coniato, mentre Rebecca Parsons, Josh MacKenzie ed io stavamo preparando per un discorso ad una conferenza nel settembre 2000. Nel discorso che stati sottolineando i numerosi vantaggi della logica di business di codificazione nel java regolare oggetti piuttosto che usare Entity Beans. Ci siamo chiesti perché le persone di erano così contrarie all'uso di oggetti regolari nei loro sistemi e concludeva che ciò era dovuto al fatto che agli oggetti semplici mancava un nome di fantasia. Quindi, ne abbiamo dato uno, ed è catturato molto bene.

http://www.martinfowler.com/bliki/POJO.html

0

POJOS ad alcune convenzioni (getter/setter, costruttore pubblico no-arg, variabili private) e sono in azione (es. Viene utilizzato per la lettura dei dati dal modulo) sono JAVABEANS.

3

POJO: Se la classe può essere eseguito con sottostante JDK, senza altre librerie di terze parti esterne supportano quindi il suo chiamati POJO

JavaBean: Se la classe contiene solo attributi con funzioni di accesso (setter e getter) quelli sono chiamati JavaBean I bean Java in genere non contengono alcuna logica di bussiness, piuttosto che vengono utilizzati per contenere alcuni dati in essa contenuti.

Tutti Javabeans sono POJO POJO ma tutti non sono Javabeans

0

Pojo - Plain Old Java oggetto

classe POJO è una classe ordinaria senza alcuna specialità, classe totalmente debolmente accoppiati dalla tecnologia/framework.the classe non implementa dalla tecnologia/quadro e non si estende dalla tecnologia/api quadro che classe si chiama classe POJO.

classe POJO può implementa le interfacce ed estendere le classi, ma la classe o l'interfaccia super-non dovrebbe essere una tecnologia/quadro.

Esempi:

1.

class ABC{ 
---- 
} 

classe ABC non danno esecuzione o che si estendono dalla tecnologia/quadro che è il motivo per cui questo è di classe POJO.

2.

class ABC extends HttpServlet{ 
--- 
} 

classe ABC che si estende da api tecnologia servlet che è il motivo per cui questo non è una classe POJO.

3.

class ABC implements java.rmi.Remote{ 
---- 
} 

classe ABC implementa via api rmi Ecco perché questa non è una classe POJO.

4.

class ABC implements java.io.Serializable{ 
--- 
} 

questa interfaccia è parte del linguaggio Java non è una parte della tecnologia/framework.so questo è di classe POJO.

5.

class ABC extends Thread{ 
-- 
} 

qui filo è anche classe di linguaggio Java quindi questo è anche una classe POJO.

6.

class ABC extends Test{ 
-- 
} 

se la classe di test si estende o attrezzi da tecnologie/quadro, allora ABC non è anche una classe POJO perché eredita le proprietà della classe Test. se la classe di prova non è una classe POJO allora classe ABC, inoltre, non una classe POJO.

7.

ora questo punto è un caso eccezionale

@Entity 
class ABC{ 
-- 
} 

@Entity è un'annotazione data dal api sospensione o API JPA, ma ancora possiamo chiamare questa classe come classe POJO. classe con annotazioni riportate dalla tecnologia/quadro si chiama classe POJO da questo caso eccezionale.

Problemi correlati