Какую функцию выполняют эти аннотации Java? - PullRequest
7 голосов
/ 30 апреля 2009

Мне до сих пор не ясно, для чего нужны аннотации на Java. Первоначально я думал, что они просто служили документацией. Но, глядя на эту документацию из Google App Engine Datastore , я не совсем уверен. @ PersistenceCapable (identityType = IdentityType.APPLICATION) больше похоже на сигнатуру метода.

Какова цель этого типа аннотации? Что это делает?

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...
}

Ответы [ 3 ]

9 голосов
/ 30 апреля 2009

Это метаданные уровня источника. Это способ добавления информации в код, который не является кодом, и который легко обрабатывается машиной.

В вашем примере они используются для настройки объектно-реляционного отображения для этого типа сущности. Он говорит, что, например, поле id должно быть первичным ключом для этого объекта, а firstName, lastName и hireDate должны храниться в базе данных. (Чтобы отличить эти поля от некоторого состояния переходного объекта.)

Поддержка GAE для JDO должна знать, какие объекты вы попытаетесь сохранить в базе данных. Это делается путем просмотра классов в вашем коде, поиска тех, которые снабжены аннотацией @ PersistenceCapable.

Обычно они используются для замены тех мест, где вы раньше использовали внешние файлы конфигурации; стандартная библиотека Java имеет инструменты для чтения аннотаций в вашем коде, что значительно облегчает их обработку, чем развертывание вашего собственного файла конфигурации, и обеспечивает бесплатную поддержку IDE.

1 голос
/ 30 апреля 2009

Аннотации могут обрабатываться с помощью API Инструментов обработки аннотаций для автоматической генерации стандартного кода.

0 голосов
/ 30 апреля 2009

Я думаю, что они получены из API данных Java API. Это API, который частично совпадает с тем, что EJB3 должен выполнять. Те же понятия, другой синтаксис и инструменты.

Если вы не знакомы с аннотациями в целом, обратитесь к учебнику по Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...