Domanda

Non sono ancora chiaro sullo scopo delle annotazioni in Java. Inizialmente pensavo che servissero solo come documentazione. Ma guardando questa documentazione da Google App Engine Datastore , I non sono così sicuro. @PersistenceCapable (identityType = IdentityType.APPLICATION) sembra più una firma del metodo.

Qual è lo scopo di questo tipo di annotazione? Che cosa fa?

import java.util.Date;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Employee {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private String firstName;

    @Persistent
    private String lastName;

    @Persistent
    private Date hireDate;

    public Employee(String firstName, String lastName, Date hireDate) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.hireDate = hireDate;
    }

    // Accessors for the fields.  JDO doesn't use these, but your application does.

    public Long getId() {
        return id;
    }

    public String getFirstName() {
        return firstName;
    } 

    // ... other accessors...
}
È stato utile?

Soluzione

Sono metadati a livello di sorgente. Sono un modo per aggiungere al codice informazioni che non sono codice e che possono essere facilmente elaborate automaticamente.

Nel tuo esempio, vengono utilizzati per configurare la mappatura relazionale degli oggetti per quel tipo di entità. Sta dicendo che ad esempio il campo ID dovrebbe essere la chiave primaria per quell'oggetto e che firstName, lastName e HireDate dovrebbero essere archiviati nel database. (Per distinguere quei campi da qualche stato di oggetto transitorio.)

Il supporto GAE per JDO deve sapere quali oggetti proverai a memorizzare nel database. Lo fa guardando le classi nel tuo codice, cercando quelle che sono annotate con @PersistenceCapable.

Comunemente, vengono utilizzati per sostituire i file di configurazione esterni utilizzati in precedenza; la libreria standard Java ha strumenti per leggere le annotazioni nel tuo codice, il che le rende molto più facili da elaborare rispetto al rotolamento del tuo impianto idraulico di file di configurazione e ti offre il supporto IDE gratuitamente.

Altri suggerimenti

Le annotazioni possono essere elaborate con lo Strumento di elaborazione delle annotazioni API per generare automaticamente codice boilerplate.

Penso che questi provengano dall'API Java Data Objects . È un'API che si sovrappone in una certa misura a ciò che EJB3 dovrebbe realizzare. Stessi concetti, sintassi e strumenti diversi.

Se non si ha familiarità con le annotazioni in generale, controllare Tutorial Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top