Skip to content

Implementasi model

Putu Wiramaswara Widya edited this page Dec 10, 2013 · 4 revisions

Implementasi Model Basis Data ke paket id.ac.its.SimplePOS2013.DataModel.Model menggunakan kelas berbasis POJO (Plain old Java Object) dengan tambahakan anotasi dari JavaX Persistence (http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html).

Proses implementasi

  • Setiap model dibuat dalam satu kelas. Misal model Barang diletakkan dalam kelas id.ac.its.SimplePOS2013.DataModel.Model.Barang dalam berkas bernama Barang.java
  • Setiap kolom dideklarasikan dalam variabel private dengan setter dan getternya.
  • Beberapa anotasi yang mungkin perlu digunakan antara lain :
    • Diletakkan pada deklarasi kelas :
      • @Entity untuk menegaskan bahwa kelas tersebut adalah entitas.
      • @Table(name="Foobar") untuk menentukan nama tabel dari kelas entitias yang dibuat. Sebaiknya dibuat sama dengan nama kelas yang digunakan, mungkin dengan perbedaan case.
    • Diletakkan pada deklarasi variabel :
      • @Id untuk menegaskan kolom tersebut sebagai primary key.
      • @Column(Name="Foobar") untuk menegaskan nama detail dari kolom.
      • @GeneratedValue ekivalen dengan penggunaan auto_increment.
      • Relasi @OneToOne, @OneToMany, @ManyToOne diisi pada kolom yang berhubungan dengan entitas lain. Relasi sebaiknya di didefinisikan secara dua arah (Misal relasi @OneToMany dari entitas Barang ke StokToko disebut @ManyToOne dari entitas StokToko ke Barang memiliki Stok Toko. Kita sebut Barang memiliki Stok). Berikut adalah beberapa penjelasan tambahan untuk definisi relasi :
        • Atribut pada anotasi relasi (Contoh @OneToOne(mappedBy="foobar")) yang terdiri dari :
          • optional=true jika asosiasi relasi tersebut memang opsional (tidak harus saling terkait).
          • mappedBy="fooBar" ditulis pada entitas yang memiliki, nama "fooBar" diisi dengan nama kolom pada kelas entitas dari sisi yang dimiliki.
        • @JoinColumn(name="fooBar") ditulis pada entitas yang dimiliki. Nama diisi dengan nama kolom pada basis data.

Contoh implementasi anotasi

Basis Data

CREATE TABLE `department` (
	`department_id` BIGINT(20) NOT NULL AUTO_INCREMENT,
	`dept_name` VARCHAR(50) NOT NULL DEFAULT '0',
	PRIMARY KEY (`department_id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=115



CREATE TABLE `employee` (
	`employee_id` BIGINT(10) NOT NULL AUTO_INCREMENT,
	`firstname` VARCHAR(50) NULL DEFAULT NULL,
	`lastname` VARCHAR(50) NULL DEFAULT NULL,
	`birth_date` DATE NULL DEFAULT NULL,
	`cell_phone` VARCHAR(15) NULL DEFAULT NULL,
	`department_id` BIGINT(20) NULL DEFAULT NULL,
	PRIMARY KEY (`employee_id`),
	INDEX `FK_DEPT` (`department_id`),
	CONSTRAINT `FK_DEPT` FOREIGN KEY (`department_id`) REFERENCES `department` (`department_id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT

Kelas Department

package net.viralpatel.hibernate;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="DEPARTMENT")
public class Department {

	@Id
	@GeneratedValue
	@Column(name="DEPARTMENT_ID")
	private Long departmentId;
	
	@Column(name="DEPT_NAME")
	private String departmentName;
	
	@OneToMany(mappedBy="department")
	private Set<Employee> employees;

	// Getter and Setter methods
}

Kelas Employee

package net.viralpatel.hibernate;

import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


@Entity
@Table(name="EMPLOYEE")
public class Employee {

	@Id
	@GeneratedValue
	@Column(name="employee_id")
	private Long employeeId;
	
	@Column(name="firstname")
	private String firstname;
	
	@Column(name="lastname")
	private String lastname;
	
	@Column(name="birth_date")
	private Date birthDate;
	
	@Column(name="cell_phone")
	private String cellphone;

	@ManyToOne
	@JoinColumn(name="department_id")
	private Department department;
	
	public Employee() {
		
	}
	
	public Employee(String firstname, String lastname, String phone) {
		this.firstname = firstname;
		this.lastname = lastname;
		this.birthDate = new Date(System.currentTimeMillis());
		this.cellphone = phone;
	}

	// Getter and Setter methods
}

Diambil dari: http://viralpatel.net/blogs/hibernate-one-to-many-annotation-tutorial/

Clone this wiki locally