Hibernate.org Community Documentation

- Prev
- Next

## Chapter 3. 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

## 3.1. The Hibernate configuration file

The contents are identical to Section 2.1, “The Hibernate configuration file”, with one important difference. The `mapping` element at the very end naming the annotated entity class using the `class` attribute.

## 3.2. 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 Section 2.2, “The entity Java class”, except that annotations are used to provide the metadata, rather than a separate `hbm.xml` file.

Example 3.1. 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 Section 2.3, “The mapping file”. Additionally the `@javax.persistence.Table` annotation explicitly specifies the table name. Without this specification, the default table name would be `EVENT`).

Example 3.2. 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.

Example 3.3. Identifying basic properties

    public String getTitle() {
        return title;
    }

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

As in Section 2.3, “The mapping file”, the `date` property needs special handling to account for its special naming and its SQL type.

## 3.3. Example code

`org.hibernate.tutorial.annotations.AnnotationsIllustrationTest` is essentially the same as `org.hibernate.tutorial.hbm.NativeApiIllustrationTest` discussed in Section 2.4, “Example code”.

## 3.4. 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.

- PrevChapter 2. Tutorial Using Native Hibernate APIs a...
- Up
- Home
- NextChapter 4. Tutorial Using the Java Persistence AP...