Monday, December 25, 2006

ตัวอย่าง Hibernate Annotation

ส่วนที่สำคัญคือการ Generate ID ใช้ Concept Table Generate

@GeneratedValue(strategy = GenerationType.TABLE, generator ="IdGen")
@javax.persistence.TableGenerator(
name="IdGen",
table="_ID_GENERATOR",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="Event_ID",
allocationSize=1
)
Class
package nidec.pcm.mapping;

import java.util.Date;

import javax.persistence.*;

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

@Id
@Column (name="uid")
@GeneratedValue(strategy = GenerationType.TABLE, generator ="IdGen")
@javax.persistence.TableGenerator(
name="IdGen",
table="_ID_GENERATOR",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="Event_ID",
allocationSize=1
)
private Long id;
@Column (name="date")
private Date date;
@Column (name="title")
private String title;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

Table
Generate Table
CREATE TABLE _id_generator
(
gen_key varchar(20) NOT NULL,
gen_value int4 NOT NULL
)
-- Data Table
CREATE TABLE event
(
uid int4 NOT NULL,
date date,
title varchar(30),
CONSTRAINT pk_event PRIMARY KEY (uid)

Hibernate Config

เพิ่ม mapping class ใน hibernate.cfg.xml ด้วย

Object/Relational Mapping

เริ่มต้นกับ ORM ควรอ่านบทความนี้ก่อน
http://www.twoguru.com/playground/cs_tutorial/oop/o_r_mapping.htm