# Tutorial Using Native Hibernate APIs and Annotation Mappings

This tutorial is located within the download bundle under `basic`.

Objectives

- Use annotations to provide mapping information

- Use the native Hibernate APIs

## The Hibernate configuration file

The contents are identical to , with one important difference. The `mapping` element at the very end naming the annotated entity class using the `class` attribute.

## The annotated entity Java class

The entity class in this tutorial is org.hibernate.tutorial.annotations.Event which follows JavaBean conventions. In fact the class itself is identical to the one in , except that annotations are used to provide the metadata, rather than a separate `hbm.xml` file.

Identifying the class as an entity

    @Entity
    @Table( name = "EVENTS" )
    public class Event {
        ...
    }

The @javax.persistence.Entity annotation is used to mark a class as an entity. It functions the same as the `class` mapping element discussed in . Additionally the @javax.persistence.Table annotation explicitly specifies the table name. Without this specification, the default table name would be `EVENT`).

Identifying the identifier property

    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    public Long getId() {
        return id;
    }

@javax.persistence.Id marks the property which defines the entity's identifier. @javax.persistence.GeneratedValue and @org.hibernate.annotations.GenericGenerator work in tandem to indicate that Hibernate should use Hibernate's `increment` generation strategy for this entity's identifier values.

Identifying basic properties

    public String getTitle() {
        return title;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "EVENT_DATE")
    public Date getDate() {
        return date;
    }

As in , the `date` property needs special handling to account for its special naming and its SQL type.

## Example code

org.hibernate.tutorial.annotations.AnnotationsIllustrationTest is essentially the same as org.hibernate.tutorial.hbm.NativeApiIllustrationTest discussed in .

## Take it further!

Practice Exercises

- Add an association to the Event entity to model a message thread. Use the Developer Guide as a guide.

- Add a callback to receive notifications when an Event is created, updated or deleted. Try the same with an event listener. Use the Developer Guide as a guide.