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.
5 Responses to “Hello Hibernate Annotation”
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
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..
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
By abud on May 8, 2006 | Reply
Curang, yang punya ibatis masih didevelop
Terpaksa kalo mau pakai annot harus pakai Hibernate nih