Hello Hibernate Annotation

Posted on May 4th, 2006 | by Endy Muhardin |

Adanya fitur annotation di Java 5 membuka dunia baru bagi para coder Java. Dulu semua metadata mau tidak mau harus disimpan di XML file. Sekarang ada pilihan baru, kita bisa taruh di XML file, atau juga bisa di source code melalui annotation.

Salah satu implementasinya adalah annotation untuk hibernate untuk mendefinisikan mapping Hibernate. Sekarang kita tidak perlu lagi membuat *.hbm.xml untuk menyatakan mapping antara Java class dengan tabel di database.

Mari kita lihat kodenya.

Category.java


package id.web.endy.tutorial;

public class Category {
  private Integer id;
  private String name;
  private String description; 

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Class di atas akan kita simpan ke database dengan skema tabel (MySQL) sebagai berikut:

Category-ddl.sql


CREATE TABLE Category (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255),
  description VARCHAR(255)
);

Sebelum jaman annotation, kita harus buat mapping file sebagai berikut.

Category.hbm.xml


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
  <class name="id.web.endy.tutorial.Category" table="Category">
    <id name="id" column="id">
      <generator class="auto"/>
    </id>
    <property name="name" column="name"/>
    <property name="name" column="description"/>
</class>
</hibernate-mapping>

Tapi dengan menggunakan annotation, kita bisa lupakan file Category.hbm.xml. Sebagai gantinya, kita tambahkan sedikit annotation pada class Category sebagai berikut

Category.java dengan Annotation


package id.web.endy.tutorial;

@Entity
public class Category {
  private Integer id;
  private String name;
  private String description; 

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  @Id(generate=GeneratorType.AUTO)
  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Perbedaan pada kode di atas cuma dua baris saja, yaitu:

  • @Entity
  • @Id(generate=GeneratorType.AUTO)

Selain untuk property dan id biasa, hibernate annotation juga dapat digunakan untuk one-to-many, many-to-many, dan teknik-teknik advanced lainnya.

  1. 5 Responses to “Hello Hibernate Annotation”

  2. By sugianto on May 5, 2006 | Reply

    Ada yag kelupaan tuch pake endy, @Table nya belum CMIIW
    Sekalian dunk buat yg ada Relasinya kayak One2One, One2Many, dan Many2Many biar lengkap He..3x Itu juga kalo gak keberatan

  3. By sugianto on May 5, 2006 | Reply

    Wah, ternyata bisa y tanpa @Table kalo nama Class dan nama Tabelnya sama. Seperti @Column juga, kalo property n nama field di Tabel juga sama y.. He..

  4. By Endy Muhardin on May 5, 2006 | Reply

    Iya itu sengaja nama tabel dan kolom disamakan dengan nama class dan property. Biar gak usah pakai @Table dan @Column lagi.

    One to Many akan segera menyusul begitu ada waktu luang :D

  5. By abud on May 8, 2006 | Reply

    Curang, yang punya ibatis masih didevelop :(
    Terpaksa kalo mau pakai annot harus pakai Hibernate nih

Post a Comment