2015-03-29 31 views
9

Sto studiando JPA in applicazione Spring e ho alcune zitelle relative all'annotazione @Entity.Qual è il significato esatto dell'annotazione JPA @Entity?

quindi ho una classe di modello come questo:

@Entity 
@Table(name= “T_CUSTOMER”) 
public class Customer { 

    @Id 
    @Column(name=“cust_id”) 
    private Long id; 

    @Column(name=“first_name”) 
    private String firstName; 

    @Transient 
    private User currentUser; 

    ........................... 
    ........................... 
    ........................... 
} 

Ok, so che l'annotazione @Entity è al livello di classe e significa che i campi dell'oggetto che sono le istanze di questo classe devono essere mappate nel campo della tabella di database T_CUSTOMER.

Ma perché in APP è obbligatorio l'uso di @Entity annotazioni e non posso usare solo la @Table annotazioni per mappare un oggetto del modello per una tabella di database specifico? Ha qualche altro significato \ comportamento che in realtà mi manca?

Cosa mi manca? Qual è il significato esatto dell'annotazione @Entity?

+0

L'annotazione '@ Tabella' è facoltativa. Quindi, come potrebbe sapere JPA che una classe deve essere mappata per essere utilizzata nel processo ORM se non è presente? – geoand

+1

Anche @Entity è facoltativo, dal momento che è possibile definire quali classi sono entità in orm.xml –

risposta

12

@Entity l'annotazione definisce che una classe può essere associata a una tabella. E questo è, è solo un marker, come ad esempio l'interfaccia Serializable.

E perché l'annotazione @Entity è obbligatoria? ... beh, è ​​il modo in cui è progettato JPA. Quando si crea una nuova entità che dovete fare almeno due cose

  1. annotato con @Entity

  2. creare un campo id e annotare con @Id

Tutto il resto è optional , ad esempio il nome della tabella deriva dal nome della classe di entità (e pertanto l'annotazione @Table può essere facoltativa), le colonne della tabella derivano da variabili di entità (e quindi @Column annota tion può essere facoltativo), e così via ...

JPA sta cercando di fornire un avvio facile e veloce agli sviluppatori che desiderano imparare/utilizzare questa API e dando agli sviluppatori l'opzione di configurare il minor numero possibile di cose da fare qualcosa di funzionale è uno dei modi in cui questa API vuole raggiungere questo obiettivo "facile da usare/imparare". Quindi l'annotazione @Entity (insieme con l'annotazione @Id) è il minimo che devi fare per creare un'entità.