Selasa, 02 Desember 2008

Object Database Perst


Apa itu Perst?

Perst merupakan Sistem Object Oriented Database sederhana untuk Java/.Net. Object Oriented disini maksudnya bahwa Perst dapat melakukan store/load object secara langsung. Sasaran dari Perst adalah menyediakan bagi programmer suatu mekanisme yang sesuai dan powerful terhadap data yang dalam jumlah besar. Beberapa asumsi dasar yang menentukan desain dari Perst, antara lain:

  1. Object persistent dapat diakses dalam cara yang sama sebagai object sementara

  2. Engine database dapat lebih mudah dikelola secara efisien untuk data yang banyak dan dapat sesuai di memori utama

  3. tidak perlu preprocessor yang khusus, compiler, virtual machine atau tools lainnya yang seharusnya diperlukan pada database dan untuk mengembangkan aplikasi yang menggunakannya.



Menyimpan Object ke dalam database

Sasaran utama dari Perst adalah memandu programmer untuk bekerja dengan object persistent dengan cara yang dimungkinkan sama dengan object sementara secara normal. Bagaimanapun, persistensi memiliki aspek yang tidak dapat disembunyikan bagi programmer. Sebagai contoh, suatu penyimpanan Perst dimana object-object akan disimpan perlu dispesifikasikan, dan konsistensi data perlu disediakan. Dengan Perst, task-task tersebut dilakukan oleh class Storage. Class ini merupakan class abstract dan programmer wajib menggunakan class storageFactory untuk membuat instance storage.


  1

2


// get instance of the storage
Storage db = StorageFactory.getInstance().createStorage();



Jika instance storage sudah dibuat, maka storage dapat di-Open:


// open the database

db.open("test.dbs", pagePoolSize);



Dapat dimungkinkan penggunaan Perst sebagai memori internal database, di mana semua data disimpan dan dikelola pada memori utama. Hal ini memerlukan penggunaan class stub NullFile dan menspesifikasikan INFINITE_PAGE_POOL sebagai pagepoolsize.


db.open(new NullFile(),Storage.INFINITE_PAGE_POOL);


Jika aplikasi menggunakan suatu database Perst diakhiri, database tersebut perlu ditutup menggunakan method Storage.close()


// get instance of the storage

Storage db = StorageFactory.getInstance().createStorage();

db.open("test.dbs", pagePoolSize); // Open the database

// do something with the database

db.close(); // ... and close it



Root Object

Setelah instance storage dibuka, database dapat diakses object persistentnya. Ketika aplikasi mengakses object secara normal, aplikasi menggunakan referensi agar object tetap berada pada variable program atau dalam field-field dari object lain. Tetapi jika embuka suatu database yang terdiri dari object persistent, aplikasi tidak akan mereferensi ke object tersebut.


Suatu mekanisme diperlukan untuk mendapatkan referensi dan Perst menyediakannya untuk dapat digunakan yang disebut root object. Suatu storage hanya memiliki satu root object. Untuk membuat root object digunakan method Storage.getRoot.


MyRootClass root = (MyRootClass)db.getRoot();// get storage root

if (root == null) {

// Root is not yet defined: storage is not initialized

root = new MyRootClass(db); // create root object

db.setRoot(root); // register root object

}


Contoh Program menggunakan Object Database Perst


Class Barang.java


package coba01;
import org.garret.perst.*;
public class Barang extends Persistent {
String KodeBarang;
String NamaBarang;
String Jenis;
double HargaSatuan;
String Supplier;

public Barang(String kd,String nm, String jns, double hrg, String sup){
this.KodeBarang = kd;

this.NamaBarang = nm;

this.Jenis =jns;

this.HargaSatuan =hrg;

this.Supplier = sup;

}

public String getKodeBarang(){

return KodeBarang;

}

public String getNamaBarang(){

return NamaBarang;

}

public String getJenis(){

return Jenis;

}

public double getHarga(){

return HargaSatuan;

}

public String getSupplier(){

return Supplier;

}

public String toString(){

return KodeBarang+"/"+NamaBarang+"/"+Jenis+"/"+

String.valueOf(HargaSatuan)+"/"+Supplier;

}

}


Class Main.java


package coba01;


import java.io.File;

import org.garret.perst.*;

import java.util.*;



/**

*

* @author Team_dakoop

*/



public class Main {

public static void main(String[] args) {

new File("Barang.dbs").delete();

Storage db = StorageFactory.getInstance().createStorage();

db.open("Barang.dbs");


IPersistentSet root = (IPersistentSet)db.getRoot();

if (root == null) {

root = db.createSet();

db.setRoot(root);

}

root.add(new Barang("M33",

"Mie Goreng Ayam","Mie",1200,"Fastfood"));

root.add(new Barang("S03",

"Sun Silk","Shampo",6500,"UniClean"));

root.add(new Barang("M11",

"Mie Goreng Ayam","Mie",1000,"FlyFood"));

root.add(new Barang("K31",

"Kopi cap API","Kopi",2700,"Obor"));

root.add(new Barang("T01",

"Teh Aroma Wangi","Teh",4500,"UniClean"));

root.add(new Barang("M02",

"Soto Mie","Mie",1100,"Fastfood"));

root.add(new Barang("M51",

"Mie Kari","Mie",1300,"FlyFood"));

root.add(new Barang("K21",

"Kopi cap Wangi","Kopi",7500,"Uniclean"));

root.add(new Barang("T05",

"Teh T-Melati","Teh",5500,"Obor"));

root.add(new Barang("M82",

"Mie Bakso","Mie",1200,"Fastfood"));


System.out.println("Object sudah persistent dalam Database");

Iterator iterator = root.iterator();


while (iterator.hasNext()) {

System.out.println(iterator.next());

}

db.close();

}

}



Hasil :


Object sudah persistent dalam Database

M33/Mie Goreng Ayam/Mie/1200.0/Fastfood

S03/Sun Silk/Shampo/6500.0/UniClean

M11/Mie Goreng Ayam/Mie/1000.0/FlyFood

K31/Kopi cap API/Kopi/2700.0/Obor

T01/Teh Aroma Wangi/Teh/4500.0/UniClean

M02/Soto Mie/Mie/1100.0/Fastfood

M51/Mie Kari/Mie/1300.0/FlyFood

K21/Kopi cap Wangi/Kopi/7500.0/Uniclean

T05/Teh T-Melati/Teh/5500.0/Obor

M82/Mie Bakso/Mie/1200.0/Fastfood




Resources:

Download Perst from McObject's Web site : www.mcobject.com/perst.




Referensi


Perst TM Introduction and Tutorial, McObject, 2008







Native Query pada DB4O

Native query merupakan pengembangan dari Object Query sebelumnya. Di mana object query sebelumnya memiliki banyak kekurangan diantaranya pengecekan kesalahan dan keamanan dari query.


Dimisalkan ada relationship antar object, yaitu:




Diasumsikan bahwa seorang Person memiliki suatu Account di suatu bank. Maka relationship yang akan dibuat akan membentuk dua class dengan attribute seperti berikut:



Class Account

public class Account {
private double amount;
private double credit;
}



Class Person

  1. public class Person {
  2. private Account account;
  3. private String name;
  4. private int age;
  5. }


Misalkan Object Personnya sebagai berikut:





Dari data table tersebut, Tuliskan Query di bawah ini dengan perintah SQL (untuk DBMS) dan Native Query (Object Database Db4o):

  1. Tampilkan semua kolom dari Tabel tersebut
  2. Tampilkan jumlah amount dan credit dari accountnya Linda.
  3. Tampilkan nama serta jumlah credit yang kurang dari 100.
  4. Tampilkan nama serta jumlah amount atau credit yang kurang dari 100.
  5. Tampilkan nama yang umurnya antara 40-50 dan creditnya diatas 1000
  6. Tampilkan nama serta umurnya yang Amount sama dengan nasabah Heinz.


Karena kita menggunakan Object Database Db4o maka tabel tersebut dibuat sebagai suatu Class.


Berikut ini kode program dari Class Person:


  1. package bank;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Person {
  7. private Account account;
  8. private String Name;
  9. private int Age;
  10. public Person(String name, int age){
  11. this.Name = name;
  12. this.Age = age;
  13. this.account=null;
  14. }
  15. public String getName(){
  16. return Name;
  17. }
  18. public int getAge(){
  19. return Age;
  20. }
  21. public void setAccount(Account account){
  22. this.account = account;
  23. }
  24. public Account getAccount(){
  25. return account;
  26. }
  27. public String toString(){
  28. return Name+"/"+Age+"/"+account;
  29. }
  30. }


Berikut ini kode program dari Class Account:


  1. package bank;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Account {
  7. private double Amount;
  8. private double Credit;
  9. public Account(double amount, double credit){
  10. this.Amount=amount;
  11. this.Credit = credit;
  12. }
  13. public double getAmount(){
  14. return Amount;
  15. }
  16. public double getCredit(){
  17. return Credit;
  18. }
  19. public String toString(){
  20. return Amount+"/"+Credit;
  21. }
  22. }


Solusi Query ke-1

Tampilkan semua kolom dari Tabel tersebut

Perintah SQL dalam DBMS:

SELECT *
FROM Person;


Object Query dalam Db4o:

  1. ObjectSet persons = db.query(new Predicate()
  2. {
  3. public boolean match(Person person) {
  4. return true;
  5. }
  6. });


Hasil Query ke-1

  1. Query 1 : SELECT * FROM Person;
  2. Hasil : 6
  3. Rossi/28/1500.0/500.0
  4. Tony/35/2500.0/300.0
  5. James/42/1250.0/50.0
  6. Heinz/20/1500.0/500.0
  7. Eric/22/150.0/0.0
  8. Linda/45/5000.0/1500.0


Solusi Query ke-2

Tampilkan jumlah amount dan credit dari accountnya Linda.


Perintah SQL dalam DBMS:

SELECT Amount, Credit
FROM Person
WHERE Name = ‘Linda’;


Object Query dalam Db4o:

  1. ObjectSet persons = db.query(new Predicate()
  2. {
  3. public boolean match(Person person) {
  4. return person.getName().equals("Linda");
  5. }
  6. });

Hasil Query ke-2

Query 2 : SELECT Amount,Credit FROM Person WHERE Name = 'Linda';
Hasil : 1 record
5000.0/1500.0



Solusi Query ke-3

Tampilkan nama serta jumlah credit yang kurang dari 100.


Perintah SQL dalam DBMS:

SELECT Name, Credit
FROM Person
WHERE Credit <>


Object Query dalam Db4o:


  1. ObjectSet persons = db.query(new Predicate()
  2. {
  3. public boolean match(Person person) {
  4. return person.getAccount().getCredit() <>
  5. }
  6. });


Hasil Query ke-3

Query 3 : SELECT Name, Credit FROM Person WHERE Credit <>


Solusi Query ke-4

Tampilkan nama serta jumlah amount atau credit yang kurang dari 100.


Perintah SQL dalam DBMS:

SELECT Name, Amount, Credit
FROM Person
WHERE Amount <>


Object Query dalam Db4o:


  1. ObjectSet persons = db.query(new Predicate()
  2. {
  3. public boolean match(Person person) {
  4. return person.getAccount().getAmount() <>
  5. person.getAccount().getCredit() <>
  6. }
  7. });



Hasil Query ke-4

Query 4 : SELECT Name, Amount, Credit FROM Person WHERE Amount <>

Solusi Query ke-5

Tampilkan nama yang umurnya antara 40-50 dan creditnya diatas 1000


Perintah SQL dalam DBMS:

SELECT Name
FROM Person
WHERE (Age between 40 AND 50) AND (Credit > 1000);


Object Query dalam Db4o:

  1. ObjectSet persons = db.query(new Predicate()
  2. {
  3. public boolean match(Person person) {
  4. return person.getAge() >= 40
  5. && person.getAge() <= 50
  6. && person.getAccount().getCredit() > 1000.0;
  7. }
  8. });


Hasil Query ke-5

Query 5 : SELECT Name FROM Person WHERE (Age Between 40 AND 50) AND (Credit > 1000);
Hasil : 1 record
Linda



Solusi Query ke-6

Tampilkan nama serta umurnya yang Amount sama dengan nasabah Heinz.


Perintah SQL dalam DBMS:

SELECT Name, Age
FROM Person
WHERE Not( Name = ‘Heinz’) AND Amount IN (
SELECT Amount
FROM Person
WHERE Name = ‘Heinz’);


Object Query dalam Db4o:

  1. ObjectSet Subpersons = db.query(new Predicate()
  2. {
  3. public boolean match(Person person) {
  4. return person.getName().equals("Rossi");
  5. }
  6. });
  7. while (Subpersons.hasNext())
  8. {
  9. final Person persons = (Person)Subpersons.next();
  10. ObjectSet Objperson = db.query(new Predicate()
  11. {
  12. public boolean match(Person p) {
  13. return p.getAccount().getAmount() ==
  14. persons.getAccount().getAmount()
  15. && p.getName() != "Heinz" ;
  16. }
  17. });
  18. }



Hasil Query ke-6

Query 6 :
SELECT Name, Age
FROM Person
WHERE Not( Name = ‘Heinz’) AND Amount IN (
SELECT Amount
FROM Person
WHERE Name = ‘Heinz’);
Hasil : 1 record
Rossi




Full Source Code

  1. package bank;

  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. import com.db4o.query.*;
  8. import java.io.File;

  9. public class Main {

  10. /**
  11. * @param args the command line arguments
  12. */
  13. public static void main(String[] args) {
  14. // TODO code application logic here
  15. InsertData();
  16. Query1();
  17. Query2();
  18. Query3();
  19. Query4();
  20. Query5();
  21. Query6();
  22. }
  23. public static void InsertData(){
  24. new File("Person.yap").delete();
  25. ObjectContainer db = Db4o.openFile("Person.yap");
  26. Account a1 = new Account(1500, 500);
  27. Person p1 = new Person("Heinz", 20);
  28. p1.setAccount(a1);
  29. Account a2 = new Account(5000, 1500);
  30. Person p2 = new Person("Linda", 45);
  31. p2.setAccount(a2);
  32. Person p3 = new Person("Eric", 22);
  33. Account a3 = new Account(150, 0);
  34. p3.setAccount(a3);
  35. Person p4 = new Person("James", 42);
  36. Account a4 = new Account(1250, 50);
  37. p4.setAccount(a4);
  38. Person p5 = new Person("Tony", 35);
  39. Account a5 = new Account(2500, 300);
  40. p5.setAccount(a5);
  41. Person p6 = new Person("Rossi", 28);
  42. Account a6 = new Account(1500, 500);
  43. p6.setAccount(a6);
  44. db.set(p1);db.set(p2);db.set(p3);db.set(p4);db.set(p5);db.set(p6);
  45. db.close();
  46. System.out.println("Data Person sudah tersimpan");
  47. }
  48. public static void Query1(){
  49. ObjectContainer db = Db4o.openFile("Person.yap");
  50. ObjectSet persons = db.query(new Predicate()
  51. {
  52. public boolean match(Person person) {
  53. return true;
  54. }
  55. });
  56. System.out.println("Query 1 : SELECT * FROM Person;");
  57. System.out.println("Hasil : " + persons.size());
  58. while (persons.hasNext()){
  59. System.out.println(persons.next());
  60. }
  61. db.close();
  62. }

  63. public static void Query2(){
  64. ObjectContainer db = Db4o.openFile("Person.yap");
  65. ObjectSet persons = db.query(new Predicate()
  66. {
  67. public boolean match(Person person) {
  68. return person.getName().equals("Linda");
  69. }
  70. });
  71. System.out.println("Query 2 : SELECT Amount,Credit FROM Person WHERE Name = 'Linda';");
  72. System.out.println("Hasil : " + persons.size()+" record");
  73. while (persons.hasNext()){
  74. Person person = (Person)persons.next();
  75. System.out.println(person.getAccount());
  76. }
  77. db.close();
  78. }


  79. public static void Query3(){
  80. ObjectContainer db = Db4o.openFile("Person.yap");
  81. ObjectSet persons = db.query(new Predicate()
  82. {
  83. public boolean match(Person person) {
  84. return person.getAccount().getCredit() <>
  85. }
  86. });
  87. System.out.println("Query 3 : SELECT Name, Credit FROM Person WHERE Credit <>
  88. System.out.println("Hasil : " + persons.size()+" record");
  89. while (persons.hasNext()){
  90. Person person = (Person)persons.next();
  91. System.out.println(person.getName()+"/"+ person.getAccount().getCredit());
  92. }
  93. db.close();
  94. }
  95. public static void Query4(){
  96. ObjectContainer db = Db4o.openFile("Person.yap");
  97. ObjectSet persons = db.query(new Predicate()
  98. {
  99. public boolean match(Person person) {
  100. return person.getAccount().getAmount() <>
  101. }
  102. });
  103. System.out.println("Query 4 : SELECT Name, Amount, Credit FROM Person WHERE Amount <>
  104. System.out.println("Hasil : " + persons.size()+" record");
  105. while (persons.hasNext()){
  106. Person person = (Person)persons.next();
  107. System.out.println(person.getName()+"/"+ person.getAccount());
  108. }
  109. db.close();
  110. }

  111. public static void Query5(){
  112. ObjectContainer db = Db4o.openFile("Person.yap");
  113. ObjectSet persons = db.query(new Predicate()
  114. {
  115. public boolean match(Person person) {
  116. return person.getAge() >= 40
  117. && person.getAge() <= 50
  118. && person.getAccount().getCredit() > 1000.0;
  119. }
  120. });
  121. System.out.println("Query 5 : SELECT Name FROM Person WHERE (Age Between 40 AND 50) AND (Credit > 1000);");
  122. System.out.println("Hasil : " + persons.size()+" record");
  123. while (persons.hasNext()){
  124. Person person = (Person)persons.next();
  125. System.out.println(person.getName());
  126. }
  127. db.close();
  128. }
  129. public static void Query6(){
  130. ObjectContainer db = Db4o.openFile("Person.yap");
  131. ObjectSet Subpersons = db.query(new Predicate()
  132. {
  133. public boolean match(Person person) {
  134. return person.getName().equals("Rossi");
  135. }
  136. });
  137. while (Subpersons.hasNext())
  138. {
  139. final Person persons = (Person)Subpersons.next();
  140. ObjectSet Objperson = db.query(new Predicate()
  141. {
  142. public boolean match(Person p) {
  143. return p.getAccount().getAmount() == persons.getAccount().getAmount()
  144. && p.getName() != "Heinz" ;
  145. }
  146. });
  147. System.out.println("Query 6 :");
  148. System.out.println("SELECT Name, Age");
  149. System.out.println("FROM Person");
  150. System.out.println("WHERE Not( Name = ‘Heinz’) AND Amount IN (");
  151. System.out.println(" SELECT Amount");
  152. System.out.println(" FROM Person");
  153. System.out.println(" WHERE Name = ‘Heinz’);");
  154. System.out.println("Hasil : " + Objperson.size()+" record");
  155. while (Objperson.hasNext()){
  156. Person person = (Person)Objperson.next();
  157. System.out.println(person.getName());
  158. }
  159. }
  160. db.close();
  161. }
  162. }


Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta






Rabu, 19 November 2008

Sorting dalam Database Db4o

Pada kesempatan kali ini, penulis akan menunjukkan cara melakukan Pengurutan (Sortir) Object Query di dalam database Db4o.

Misalkan dalam suatu DBMS terdapat table Barang seperti berikut:



Dari table tersebut, akan diurutkan berdasarkan Nama barang dan Harga secara Ascending dan Descending.


Karena kita menggunakan Object Database Db4o maka tabel tersebut dibuat sebagai suatu Class.


Berikut ini kode program dari Class Barang (dari Bagian I):


  1. package barang;
  2. /**
  3. *
  4. @author team_dakoop
  5. */
  6. public class Barang {
  7. String KodeBarang;
  8. String NamaBarang;
  9. String Jenis;
  10. double HargaSatuan;
  11. String Supplier;

  12. public Barang(String kd,String nm, String jns,
  13. double hrg, String sup){
  14. this.KodeBarang = kd;
  15. this.NamaBarang = nm;
  16. this.Jenis =jns;
  17. this.HargaSatuan =hrg;
  18. this.Supplier = sup;
  19. }

  20. public String getKodeBarang(){
  21. return KodeBarang;
  22. }
  23. public String getNamaBarang(){
  24. return NamaBarang;
  25. }
  26. public String getJenis(){
  27. return Jenis;
  28. }
  29. public double getHarga(){
  30. return HargaSatuan;
  31. }
  32. public String getSupplier(){
  33. return Supplier;
  34. }
  35. public String toString(){
  36. return KodeBarang+"/"+NamaBarang+"/"+Jenis+"/"+
  37. String.valueOf(HargaSatuan)+"/"+Supplier;
  38. }
  39. }


Buat desain form seperti yang terlihat pada gambar berikut, pada form (JFrame1) terdapat komponen-komponen sebagai berikut:

  • JRadioButton (4 buah)
  • JButtonGroup (2 buah)
  • JPanel (2 buah)
  • JButton (1 buah)
  • JTabel (1 buah)




Pada project kali ini penulis menggunakan ketentuan nama komponen sebagai berikut untuk memudahkan pemahaman dalam pembuatan kode program.



Komponen

Text

Name

JRadioButton1

Ascending

optAsc

JRadioButton2

Descending

optDsc

JRadioButton3

Nama Barang

optNama

JRadioButton4

Harga Satuan

optHarga

JFrame1

Aplikasi Barang

FrmBarang

JButton1

Tampil

cmdTampil



Jika komponen JButtonGroup sudah diletakkan pada form (setelah peletakan ke form tidak akan terlihat, namun pada bagian Inspector akan kelihatan) maka klik pada komponen optAsc dan optDsc kemudian pada properties cari button group kemudian ubah menjadi buttonGroup1. begitu juga untuk komponen optNama dan optHarga.



Pada komponen JTabel, disesuaikan kolomnya dengan Class Barang. Caranya pada bagian properties Model, ditambahkan field-field yang bersesuaian. Untuk lebih jelasnya lihat pada gambar berikut:





Setelah anda mengubah nama setiap komponen maka sekarang saatnya masuk pada proses Coding.


Dibawah package anda ketikkan perintah import berikut untuk menggunakan object database Db4o dan unit-unit lainnya.

  1. package appbarang;

  2. /**
  3. *
  4. * @author team_dakoop
  5. */
  6. import com.db4o.*;
  7. import com.db4o.query.*;
  8. import java.io.File;


Kemudian buat sebuah procedure untuk menginsert data ke dalam object database, kode programmnya sebagai berikut:


  1. public static void InsertData(){
  2. new File("Barang.yap").delete();
  3. ObjectContainer db = Db4o.openFile("Barang.yap");
  4. Barang barang1 = new Barang("M33",
  5. "Mie Goreng Ayam","Mie",1200,"Fastfood");
  6. Barang barang2 = new Barang("S03",
  7. "Sun Silk","Shampo",6500,"UniClean");
  8. Barang barang3 = new Barang("M11",
  9. "Mie Goreng Ayam","Mie",1000,"FlyFood");
  10. Barang barang4 = new Barang("K31",
  11. "Kopi cap API","Kopi",2700,"Obor");
  12. Barang barang5 = new Barang("T01",
  13. "Teh Aroma Wangi","Teh",4500,"UniClean");
  14. Barang barang6 = new Barang("M02",
  15. "Soto Mie","Mie",1100,"Fastfood");
  16. Barang barang7 = new Barang("M51",
  17. "Mie Kari","Mie",1300,"FlyFood");
  18. Barang barang8 = new Barang("K21",
  19. "Kopi cap Wangi","Kopi",7500,"Uniclean");
  20. Barang barang9 = new Barang("T05",
  21. "Teh T-Melati","Teh",5500,"Obor");
  22. Barang barang10 = new Barang("M82",
  23. "Mie Bakso","Mie",1200,"Fastfood");
  24. db.set(barang1);db.set(barang2);
  25. db.set(barang3);db.set(barang4);
  26. db.set(barang5);db.set(barang6);
  27. db.set(barang7);db.set(barang8);
  28. db.set(barang9);db.set(barang10);
  29. db.close();
  30. System.out.println("Data Barang
  31. sudah tersimpan pada Object Database");
  32. }

Kemudian ketikkan lagi sebuah procedure yang gunanya untuk menampilkan record-record ke dalam tabel grid.


  1. private void ShowTable(){
  2. ObjectContainer db = Db4o.openFile("Barang.yap");
  3. try
  4. {
  5. Query qry = db.query();
  6. qry.constrain(Barang.class);
  7. ObjectSet res = qry.execute();
  8. Object[][] x = new Object[res.size()][6];
  9. jTable1.setModel(
  10. new javax.swing.table.DefaultTableModel
  11. (x, new String []
  12. {"Kode Barang","Nama Barang","Jenis",
  13. "Harga Satuan","Supplier"}));
  14. int y=0;
  15. while (res.hasNext())
  16. {
  17. Barang b = (Barang) res.next();
  18. jTable1.setValueAt(b.getKodeBarang() ,y,0);
  19. jTable1.setValueAt(b.getNamaBarang() ,y,1);
  20. jTable1.setValueAt(b.getJenis() ,y,2);
  21. jTable1.setValueAt(String.valueOf(
  22. b.getHarga()) ,y,3);
  23. jTable1.setValueAt(b.getSupplier() ,y,4);
  24. y++;
  25. }
  26. }
  27. finally
  28. {
  29. db.close();
  30. }
  31. }


Nah, satu lagi procedure yang sebenarnya pengembangan dari procedure sebelumnya, yaitu digunakan untuk menampilkan tabel hasil sortir. Kode programnya sebagai berikut:

  1. private void SortTable(){
  2. ObjectContainer db = Db4o.openFile("Barang.yap");
  3. try
  4. {
  5. Query qry = db.query();
  6. qry.constrain(Barang.class);
  7. if (optNama.isSelected() == true ){
  8. if (optAsc.isSelected() == true){
  9. qry.descend(
  10. "NamaBarang").orderAscending();
  11. }
  12. else
  13. {
  14. qry.descend(
  15. "NamaBarang").orderDescending();
  16. }
  17. }
  18. else
  19. {
  20. if (optAsc.isSelected() == true){
  21. qry.descend(
  22. "HargaSatuan").orderAscending();
  23. }
  24. else
  25. {
  26. qry.descend(
  27. "HargaSatuan").orderDescending();
  28. }
  29. }
  30. ObjectSet res = qry.execute();
  31. Object[][] x = new Object[res.size()][6];
  32. jTable1.setModel(
  33. new javax.swing.table.DefaultTableModel
  34. (x, new String []
  35. {"Kode Barang","Nama Barang","Jenis",
  36. "Harga Satuan","Supplier"}));
  37. int y=0;
  38. while (res.hasNext())
  39. {
  40. Barang b = (Barang) res.next();
  41. jTable1.setValueAt(b.getKodeBarang() ,y,0);
  42. jTable1.setValueAt(b.getNamaBarang() ,y,1);
  43. jTable1.setValueAt(b.getJenis() ,y,2);
  44. jTable1.setValueAt(String.valueOf(
  45. b.getHarga()) ,y,3);
  46. jTable1.setValueAt(b.getSupplier() ,y,4);
  47. y++;
  48. }
  49. }
  50. finally
  51. {
  52. db.close();
  53. }
  54. }


Setelah procedure tersebut dibuat maka saatnya kita masuk ke tombol Tampil. Ketikkan kode program berikut :

  1. private void cmdTampilActionPerformed(
  2. java.awt.event.ActionEvent evt) {
  3. // TODO add your handling code here:
  4. SortTable();
  5. }


Nah, sekarang pada program utama yaitu di file main.java, tambahkan kode program seperti tampak berikut:


  1. package appbarang;

  2. /**
  3. *
  4. * @author team_dakoop
  5. */
  6. public class Main {

  7. /**
  8. * @param args the command line arguments
  9. */
  10. public static void main(String[] args) {
  11. // TODO code application logic here
  12. new FrmBarang().setVisible(true);
  13. }
  14. }


Penjelasan mengenai Sortir pada Object Database Db4o


Sortir pada Object Db4o dapat menggunakan Object Query SODA API yang telah disediakan oleh Db4o. Adapun penulisannya sebagai berikut:


Sort secara Ascending


  1. Query query=db.query();
  2. query.constrain(NamaClass.class);
  3. query.descend("NamaAtribut").orderAscending();
  4. ObjectSet result=query.execute();


Sort secara Descending


  1. Query query=db.query();
  2. query.constrain(NamaClass.class);
  3. query.descend("NamaAtribut").orderDescending();
  4. ObjectSet result=query.execute();


Hasil Output program:




Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta






Object Query dalam Database Db4o - Section 1

Banyak DBMS yang memiliki fasilitas SQL untuk mengakses data. Begitu juga dengan Object Oriented Database.

Pada kesempatan kali ini, penulis akan menunjukkan cara melakukan Object Query di dalam database Db4o.


Misalkan dalam suatu DBMS terdapat table Barang seperti berikut:




Dari table tersebut, Tuliskan Query di bawah ini dengan perintah SQL:

  1. Tampilkan semua kolom dari Tabel tersebut
  2. Tampilkan semua kolom dari Tabel tersebut yang jenis barangnya berupa Mie.
  3. Tampilkan kode barang dan nama barang dari Tabel tersebut yang jenis barangnya selain Mie.
  4. Tampilkan nama-nama barang beserta harga satuan yang harganya diatas Rp.5000
  5. Tampilkan nama-nama barang beserta harga satuannya untuk jenis kopi atau teh.
  6. Tampilkan nama-nama barang beserta harga satuannya yang jenis barangnya Mie dan disuplai oleh Fastfood
  7. Tampilkan kode barang dan nama barang jenis Teh yang harga satuannya antara 1000 sampai dengan 5000
Karena kita menggunakan Object Database Db4o maka tabel tersebut dibuat sebagai suatu Class.

Berikut ini kode program dari Class Barang:

  1. package barang;
  2. /**
  3. *
  4. @author team_dakoop
  5. */
  6. public class Barang {
  7. String KodeBarang;
  8. String NamaBarang;
  9. String Jenis;
  10. double HargaSatuan;
  11. String Supplier;
  12. public Barang(String kd,String nm, String jns,
  13. double hrg, String sup){
  14. this.KodeBarang = kd;
  15. this.NamaBarang = nm;
  16. this.Jenis =jns;
  17. this.HargaSatuan =hrg;
  18. this.Supplier = sup;
  19. }
  20. public String getKodeBarang(){
  21. return KodeBarang;
  22. }
  23. public String getNamaBarang(){
  24. return NamaBarang;
  25. }
  26. public String getJenis(){
  27. return Jenis;
  28. }
  29. public double getHarga(){
  30. return HargaSatuan;
  31. }
  32. public String getSupplier(){
  33. return Supplier;
  34. }
  35. public String toString(){
  36. return KodeBarang+"/"+NamaBarang+"/"+Jenis+"/"+
  37. String.valueOf(HargaSatuan)+"/"+Supplier;
  38. }
  39. }


Object Query

Db4o menyediakan tiga jenis Query yang dipakai untuk melakukan proses retrieving data object dari database. Ketiga jenis object query itu antara lain:

  • Query by Example (QBE)

  • Native Queries (NQ)

  • SODA Query API (SODA)

Pada kesempatan kali ini penulis menggunakan SODA Query API (SODA)


Solusi Query ke-1

Tampilkan semua kolom dari Tabel tersebut

Perintah SQL dalam DBMS:


SELECT *

FROM BARANG;


Object Query dalam Db4o:


Query Qry = db.query();
Qry.constrain(Barang.class);
while (Hasil.hasNext())
{
System.out.println(Hasil.next());
}


Hasil Query ke-1

Query 1 : SELECT * FROM BARANG
Hasil : 10 record

M82/Mie Bakso/Mie/1200.0/Fastfood
T05/Teh T-Melati/Teh/5500.0/Obor
K21/Kopi cap Wangi/Kopi/7500.0/Uniclean
M51/Mie Kari/Mie/1300.0/FlyFood
M02/Soto Mie/Mie/1100.0/Fastfood
T01/Teh Aroma Wangi/Teh/4500.0/UniClean
K31/Kopi cap API/Kopi/2700.0/Obor
M11/Mie Goreng Ayam/Mie/1000.0/FlyFood
S03/Sun Silk/Shampo/6500.0/UniClean
M33/Mie Goreng Ayam/Mie/1200.0/Fastfood



Solusi Query ke-2

Tampilkan semua kolom dari Tabel tersebut yang jenis barangnya berupa Mie.

Perintah SQL dalam DBMS:

SELECT *
FROM BARANG
WHERE Jenis = “Mie”;


Object Query dalam Db4o:


Query Qry = db.query();

Qry.constrain(Barang.class);
Qry.descend("Jenis").constrain("Mie");

while (Hasil.hasNext())
{
System.out.println(Hasil.next());
}

Hasil Query ke-2


Query 2 : SELECT * FROM Barang WHERE Jenis = 'Mie'
Hasil : 5 record

M82/Mie Bakso/Mie/1200.0/Fastfood
M51/Mie Kari/Mie/1300.0/FlyFood
M02/Soto Mie/Mie/1100.0/Fastfood
M11/Mie Goreng Ayam/Mie/1000.0/FlyFood
M33/Mie Goreng Ayam/Mie/1200.0/Fastfood


Solusi Query ke-3

Tampilkan kode barang dan nama barang dari Tabel tersebut yang jenis barangnya selain Mie.

Perintah SQL dalam DBMS:


SELECT KodeBarang, NamaBarang

FROM BARANG
WHERE NOT (Jenis = “Mie”);

Object Query dalam Db4o:


Query Qry = db.query();

Qry.constrain(Barang.class);
Qry.descend("Jenis").constrain("Mie").not();

while (Hasil.hasNext())
{
Barang brg = (Barang)Hasil.next();
System.out.println(brg.getKodeBarang() +"/"+
brg.getNamaBarang());
}


Hasil Query ke-3


Query 3 : SELECT KodeBarang, NamaBarang FROM Barang WHERE NOT (Jenis = 'Mie')
Hasil : 5 record

T05/Teh T-Melati
K21/Kopi cap Wangi
T01/Teh Aroma Wangi
K31/Kopi cap API
S03/Sun Silk


Solusi Query ke-4

Tampilkan nama-nama barang beserta harga satuan yang harganya diatas Rp.5000

Perintah SQL dalam DBMS:


SELECT NamaBarang, HargaSatuan
FROM BARANG
WHERE HargaSatuan > 5000;

Object Query dalam Db4o:

  1. Query Qry = db.query();
  2. Qry.constrain(Barang.class);
  3. Qry.descend("HargaSatuan").constrain(
  4. new Double(5000)).greater();

  5. while (Hasil.hasNext())
  6. {
  7. Barang brg = (Barang)Hasil.next();
  8. System.out.println(brg.getNamaBarang() +"/"+
  9. String.valueOf(brg.getHarga()));
  10. }


Hasil Query ke-4


Query 4 : SELECT NamaBarang, HargaSatuan FROM Barang WHERE HargaSatuan > 5000
Hasil : 3 record

Teh T-Melati/5500.0
Kopi cap Wangi/7500.0
Sun Silk/6500.0


Solusi Query ke-5

Tampilkan nama-nama barang beserta harga satuannya untuk jenis kopi atau teh.

Perintah SQL dalam DBMS:


SELECT NamaBarang, HargaSatuan
FROM BARANG
WHERE Jenis = “Kopi” OR Jenis = “Teh”;

Object Query dalam Db4o:

  1. Query Qry = db.query();
  2. Qry.constrain(Barang.class);
  3. Constraint Qry1 = Qry.descend("Jenis").constrain("Kopi");
  4. Qry.descend("Jenis").constrain("Teh").or(Qry1);

  5. while (Hasil.hasNext())
  6. {
  7. Barang brg = (Barang)Hasil.next();
  8. System.out.println(brg.getNamaBarang() +"/"+
  9. String.valueOf(brg.getHarga()));
  10. }

Hasil Query ke-5


Query 5 : SELECT NamaBarang, HargaSatuan FROM Barang WHERE Jenis = 'Kopi' OR
Jenis = 'Teh'

Hasil : 4 record

Teh T-Melati/5500.0
Kopi cap Wangi/7500.0
Teh Aroma Wangi/4500.0
Kopi cap API/2700.0


Solusi Query ke-6

Tampilkan nama-nama barang beserta harga satuannya yang jenis barangnya Mie dan disuplai oleh Fastfood

Perintah SQL dalam DBMS:


SELECT NamaBarang, HargaSatuan
FROM BARANG
WHERE Jenis = “Mie” AND Supplier = “Fastfood”;


Object Query dalam Db4o:

  1. Query Qry = db.query();
  2. Qry.constrain(Barang.class);
  3. Constraint Qry1 = Qry.descend("Jenis").constrain("Mie");
  4. Qry.descend("Supplier").constrain("Fastfood").and(Qry1);

  5. while (Hasil.hasNext())
  6. {
  7. Barang brg = (Barang)Hasil.next();
  8. System.out.println(brg.getNamaBarang() +"/"+
  9. String.valueOf(brg.getHarga()));
  10. }

Hasil Query ke-6


Query 6 : SELECT NamaBarang, HargaSatuan FROM Barang WHERE Jenis = 'Mie' AND
Supplier = 'Fastfood'

Hasil : 3 record

Mie Bakso/1200.0
Soto Mie/1100.0
Mie Goreng Ayam/1200.0


Solusi Query ke-7

Tampilkan kode barang dan nama barang jenis Teh yang harga satuannya antara 1000 sampai dengan 5000

Perintah SQL dalam DBMS:


SELECT KodeBarang, NamaBarang
FROM Barang
WHERE Jenis = "Teh" AND HargaSatuan between 1000 AND 5000;


Object Query dalam Db4o:

  1. Query Qry = db.query();
  2. Qry.constrain(Barang.class);
  3. Constraint Qry1 = Qry.descend("HargaSatuan").constrain(
  4. new Double(1000)).greater();
  5. Constraint Qry2 = Qry.descend("HargaSatuan").constrain(
  6. new Double(5000)).smaller();
  7. Qry.descend("Jenis").constrain("Teh").and(Qry1).and(Qry2);

  8. while (Hasil.hasNext())
  9. {
  10. Barang brg = (Barang)Hasil.next();
  11. System.out.println(brg.getKodeBarang() +"/"+
  12. brg.getNamaBarang());
  13. }


Hasil Query ke-7


Query 7 : SELECT KodeBarang, NamaBarang FROM Barang WHERE Jenis = 'Teh' AND Har
gaSatuan between 1000 AND 5000

Hasil : 1 record

T01/Teh Aroma Wangi


Berikut ini Kode Program Selengkapnya:


  1. package barang;
  2. /**
  3. *
  4. * @author team_dakoop
  5. */
  6. import com.db4o.*;
  7. import com.db4o.query.*;
  8. import java.io.File;
  9. public class Main {
  10. public static void main(String[] args) {
  11. InsertData();
  12. Query1();
  13. Query2();
  14. Query3();
  15. Query4();
  16. Query5();
  17. Query6();
  18. Query7();
  19. }
  20. public static void InsertData(){
  21. new File("Barang.yap").delete();
  22. ObjectContainer db = Db4o.openFile("Barang.yap");
  23. Barang barang1 = new Barang("M33",
  24. "Mie Goreng Ayam","Mie",1200,"Fastfood");
  25. Barang barang2 = new Barang("S03",
  26. "Sun Silk","Shampo",6500,"UniClean");
  27. Barang barang3 = new Barang("M11",
  28. "Mie Goreng Ayam","Mie",1000,"FlyFood");
  29. Barang barang4 = new Barang("K31",
  30. "Kopi cap API","Kopi",2700,"Obor");
  31. Barang barang5 = new Barang("T01",
  32. "Teh Aroma Wangi","Teh",4500,"UniClean");
  33. Barang barang6 = new Barang("M02",
  34. "Soto Mie","Mie",1100,"Fastfood");
  35. Barang barang7 = new Barang("M51",
  36. "Mie Kari","Mie",1300,"FlyFood");
  37. Barang barang8 = new Barang("K21",
  38. "Kopi cap Wangi","Kopi",7500,"Uniclean");
  39. Barang barang9 = new Barang("T05",
  40. "Teh T-Melati","Teh",5500,"Obor");
  41. Barang barang10 = new Barang("M82",
  42. "Mie Bakso","Mie",1200,"Fastfood");
  43. db.set(barang1);db.set(barang2);
  44. db.set(barang3);db.set(barang4);
  45. db.set(barang5);db.set(barang6);
  46. db.set(barang7);db.set(barang8);
  47. db.set(barang9);db.set(barang10);
  48. db.close();
  49. System.out.println("Data Barang
  50. sudah tersimpan pada Object Database");
  51. }
  52. public static void Query1(){
  53. ObjectContainer db = Db4o.openFile("Barang.yap");
  54. Query Qry = db.query();
  55. Qry.constrain(Barang.class);
  56. ObjectSet Hasil = Qry.execute();
  57. System.out.println("Query 1 :
  58. SELECT * FROM BARANG");
  59. TampilSemua(Hasil);
  60. db.close();
  61. }
  62. public static void Query2(){
  63. ObjectContainer db =
  64. Db4o.openFile("Barang.yap");
  65. Query Qry = db.query();
  66. Qry.constrain(Barang.class);
  67. Qry.descend("Jenis").constrain("Mie");
  68. ObjectSet Hasil = Qry.execute();
  69. System.out.println("Query 2 :
  70. SELECT * FROM Barang WHERE Jenis = 'Mie'");
  71. TampilSemua(Hasil);
  72. db.close();
  73. }
  74. public static void Query3(){
  75. ObjectContainer db =
  76. Db4o.openFile("Barang.yap");
  77. Query Qry = db.query();
  78. Qry.constrain(Barang.class);
  79. Qry.descend("Jenis").constrain("Mie").not();
  80. ObjectSet Hasil = Qry.execute();
  81. System.out.println("Query 3 :
  82. SELECT KodeBarang, NamaBarang
  83. FROM Barang WHERE NOT (Jenis = 'Mie')");
  84. System.out.println("Hasil : "+
  85. Hasil.size()+" record");
  86. while (Hasil.hasNext())
  87. {
  88. Barang brg = (Barang)Hasil.next();
  89. System.out.println(brg.getKodeBarang()
  90. +"/"+brg.getNamaBarang());
  91. }
  92. db.close();
  93. }
  94. public static void Query4(){
  95. ObjectContainer db =
  96. Db4o.openFile("Barang.yap");
  97. Query Qry = db.query();
  98. Qry.constrain(Barang.class);
  99. Qry.descend("HargaSatuan").constrain(new
  100. Double(5000)).greater();
  101. ObjectSet Hasil = Qry.execute();
  102. System.out.println("Query 4 :
  103. SELECT NamaBarang, HargaSatuan
  104. FROM Barang WHERE HargaSatuan > 5000");
  105. System.out.println("Hasil : "+
  106. Hasil.size()+" record");
  107. while (Hasil.hasNext())
  108. {
  109. Barang brg = (Barang)Hasil.next();
  110. System.out.println(brg.getNamaBarang()
  111. +"/"+String.valueOf(brg.getHarga()));
  112. }
  113. db.close();
  114. }
  115. public static void Query5(){
  116. ObjectContainer db =
  117. Db4o.openFile("Barang.yap");
  118. Query Qry = db.query();
  119. Qry.constrain(Barang.class);
  120. Constraint Qry1 =
  121. Qry.descend("Jenis").constrain("Kopi");
  122. Qry.descend("Jenis").constrain("Teh").or(Qry1);
  123. ObjectSet Hasil = Qry.execute();
  124. System.out.println("Query 5 :
  125. SELECT NamaBarang, HargaSatuan
  126. FROM Barang
  127. WHERE Jenis = 'Kopi' OR Jenis = 'Teh'");
  128. System.out.println("Hasil : "+
  129. Hasil.size()+" record");
  130. while (Hasil.hasNext())
  131. {
  132. Barang brg = (Barang)Hasil.next();
  133. System.out.println(brg.getNamaBarang()+
  134. "/"+String.valueOf(brg.getHarga()));
  135. }
  136. db.close();
  137. }

  138. public static void Query6(){
  139. ObjectContainer db =
  140. Db4o.openFile("Barang.yap");
  141. Query Qry = db.query();
  142. Qry.constrain(Barang.class);
  143. Constraint Qry1 =
  144. Qry.descend("Jenis").constrain("Mie");
  145. Qry.descend("Supplier").constrain(
  146. "Fastfood").and(Qry1);

  147. ObjectSet Hasil = Qry.execute();
  148. System.out.println("Query 6 :
  149. SELECT NamaBarang, HargaSatuan
  150. FROM Barang
  151. WHERE Jenis = 'Mie' AND
  152. Supplier = 'Fastfood'");
  153. System.out.println("Hasil : "+
  154. Hasil.size()+" record");
  155. while (Hasil.hasNext())
  156. {
  157. Barang brg = (Barang)Hasil.next();
  158. System.out.println(brg.getNamaBarang()
  159. +"/"+String.valueOf(brg.getHarga()));
  160. }
  161. db.close();
  162. }


  163. public static void Query7(){
  164. ObjectContainer db =
  165. Db4o.openFile("Barang.yap");
  166. Query Qry = db.query();
  167. Qry.constrain(Barang.class);
  168. Constraint Qry1 =
  169. Qry.descend("HargaSatuan").constrain(
  170. new Double(1000)).greater();
  171. Constraint Qry2 =
  172. Qry.descend("HargaSatuan").constrain(
  173. new Double(5000)).smaller();
  174. Qry.descend("Jenis").constrain(
  175. "Teh").and(Qry1).and(Qry2);
  176. ObjectSet Hasil = Qry.execute();
  177. System.out.println("Query 7 :
  178. SELECT KodeBarang, NamaBarang
  179. FROM Barang
  180. WHERE Jenis = 'Teh' AND
  181. HargaSatuan between 1000 AND 5000");
  182. System.out.println("Hasil : "+
  183. Hasil.size()+" record");
  184. while (Hasil.hasNext())
  185. {
  186. Barang brg = (Barang)Hasil.next();
  187. System.out.println(brg.getKodeBarang()
  188. +"/"+brg.getNamaBarang());
  189. }
  190. db.close();
  191. }
  192. public static void TampilSemua(ObjectSet Hasil){
  193. System.out.println("Hasil : "+
  194. Hasil.size()+" record");
  195. while (Hasil.hasNext())
  196. {
  197. System.out.println(Hasil.next());
  198. }
  199. }
  200. }



Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta






Selasa, 18 November 2008

Relationship/Association pada Object Database Db4o - Section 5

Inheritance

Inheritance (Pewarisan): suatu hubungan antar class di mana sebuah class diturunkan (inherits) dari class lainnya. Class hasil turunan disebut dengan derived class atau subclass, sedangkan class induk disebut dengan base class atau superclass.

Devinisi lain, Pewarisan adalah hubungan hirarkis antar class. Class dapat diturunkan dari class lain dan mewarisi semua atribut dan methoda class asalnya dan menambahkan fungsionalitas baru. Kebalikan dari pewarisan adalah generalisasi.


Multiinheritance: inheritance yang tidak hanya satu tingkat hirarki saja tetapi bisa lebih dari satu tingkatan, seperti class Hewan diturunkan lagi menjadi class Anjing, untuk class Anjing didefinisikan lagi menjadi class Doberman sebagai subclass dari Anjing.



Manfaat Inheritance

  • Inheritance memungkinkan untuk menciptakan sebuah class dari class yang sudah ada.

  • Ketika sebuah class diturunkan dari class yang sudah ada maka class tersebut mewarisi semua method dan field dari class orangtuanya.

  • Class anak juga mewarisi bentuk dari class orang tua. Artinya objek dari class anak dapat dikenali sebagai objek dari class orang tua.


Sebagai contoh hubungan Inheritance yaitu Person yang mewarisi Dosen dan Mahasiswa:



Berikut ini adalah contoh kode program dari contoh kasus Pewarisan Person terhadap class Dosen dan Mahasiswa:


Membuat Class Person


  1. package Person;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Person {
  7. String Nama;
  8. String Alamat;
  9. int umur;
  10. public Person(String nm, String alamat, int umur){
  11. this.Nama = nm;
  12. this.Alamat = alamat;
  13. this.umur = umur;
  14. }
  15. public String getNama(){
  16. return Nama;
  17. }
  18. public String getAlamat(){
  19. return Alamat;
  20. }
  21. public int getUmur(){
  22. return umur;
  23. }
  24. }


Membuat Class Dosen


  1. package Person;
  2. /**
  3. *
  4. @author Team_dakoop
  5. */
  6. public class Dosen extends Person {
  7. String IdDosen;
  8. public Dosen(String id, Person orang){
  9. super (orang.Nama, orang.Alamat, orang.umur);
  10. this.IdDosen = id;
  11. }
  12. public String getIdDosen(){
  13. return IdDosen;
  14. }
  15. }


Membuat Class Mahasiswa


  1. package Person;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Mahasiswa extends Person {
  7. String NIM;
  8. public Mahasiswa(String nim, Person orang){
  9. super (orang.Nama, orang.Alamat, orang.umur);
  10. this.NIM =nim;
  11. }
  12. public String getNIM(){
  13. return NIM;
  14. }
  15. }

Pada bagian main program


  1. package Person;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Main {
  8. /**
  9. * @param args the command line arguments
  10. */
  11. public static void main(String[] args) {
  12. // TODO code application logic here
  13. ObjectContainer db = Db4o.openFile("person.yap");
  14. Person orang1 = new Person("Budi","Bandung",38);
  15. Person orang2 = new Person("Maya","Surabaya",19);
  16. Dosen dosen = new Dosen("D22",orang1);
  17. Mahasiswa mhs = new Mahasiswa("PA/298",orang2);
  18. db.set(orang1);
  19. db.set(orang2);
  20. db.set(dosen);
  21. db.set(mhs);
  22. db.close();
  23. System.out.println("Data sudah tersimpan");
  24. }
  25. }




Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta







Relationship/Association pada Object Database Db4o - Section 4

Aggregation

Suatu object dapat memiliki bagian-bagian dari object-object lain. Contoh Mobil dapat memiliki bagian-bagian Engine, Body, Transmission dan Wheels.

Di dalam UML, aggregation terdiri dari dua jenis, yaitu :

  • aggregation yang memiliki ownership yang kuat (biasa disebut juga Composition)

  • aggregation yang memiliki ownership yang lemah (Aggregation).


Contoh Hubungan Aggregation dan Composition yang dibedakan dengan notasi:




Sebagai contoh hubungan Composition dari Computer, yang memiliki bagian-bagian Processor, RAM dan HardDisk.



Berikut ini adalah contoh kode program dari contoh kasus Composition dari Computer tersebut:


Membuat Class Computer


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Computer {
  7. String IdComputer;
  8. String NamaComputer;
  9. Processor processor;
  10. RAM ram;
  11. HardDisk HD;
  12. public Computer(String id, String nama){
  13. this.IdComputer = id;
  14. this.NamaComputer = nama;
  15. this.processor = null;
  16. this.ram = null;
  17. this.HD = null;
  18. }
  19. public void setProcessor(Processor processor){
  20. this.processor = processor;
  21. }
  22. public void setRAM(RAM ram){
  23. this.ram = ram;
  24. }
  25. public void setHD(HardDisk HD){
  26. this.HD = HD;
  27. }
  28. }


Membuat Class Processor


  1. package computer;
  2. /**
  3. *
  4. @author Team_dakoop
  5. */
  6. public class Processor {
  7. String Merk;
  8. int Kecepatan;
  9. public Processor (String merk, int kecepatan){
  10. this.Merk = merk;
  11. this.Kecepatan = kecepatan;
  12. }
  13. }


Membuat Class RAM


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class RAM {
  7. String Merk;
  8. int Kapasitas;
  9. public RAM (String merk, int kapasitas){
  10. this.Merk= merk;
  11. this.Kapasitas = kapasitas;
  12. }
  13. }


Membuat Class HardDisk


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class HardDisk {
  7. String Merk;
  8. int Kapasitas;
  9. public HardDisk(String merk, int kapasitas){
  10. this.Merk = merk;
  11. this.Kapasitas= kapasitas;
  12. }
  13. }



Pada bagian main program


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Main {
  8. /**
  9. * @param args the command line arguments
  10. */
  11. public static void main(String[] args) {
  12. // TODO code application logic here
  13. ObjectContainer db = Db4o.openFile("Computer.yap");
  14. Computer komputer = new Computer("C03",
  15. "Compaq 3736");
  16. Processor processor = new Processor(
  17. "Pentium 4 Core 2 Duo",2400);
  18. RAM ram = new RAM("DDR2 Visipro",2048);
  19. HardDisk HD = new HardDisk("Fujitsu",160);
  20. komputer.setProcessor(processor);
  21. komputer.setRAM(ram);
  22. komputer.setHD(HD);
  23. db.set(komputer);
  24. db.set(processor);
  25. db.set(ram);
  26. db.set(HD);
  27. System.out.println(
  28. "Object Komputer telah tersimpan");
  29. db.close();
  30. }
  31. }



Hasil Object Database Menggunakan Object Manager






Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta






Relationship/Association pada Object Database Db4o - Section 3

Many-to-Many Relationship


Misalkan Relationship antara Buku dan Anggota pada peminjaman buku di perpustakaan seperti berikut:



Pada Kasus perpustakaan, dengan jelas dapat kita memodelkan hubungan asosiasi antara Buku dengan Anggota, dimana banyak anggota dapat meminjam banyak buku.


Berikut ini adalah contoh kode program dari contoh kasus Peminjaman buku di perpustakaan tersebut:


Membuat Class Buku


  1. package perpustakaan;
  2. /**
  3. *
  4. @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Buku {
  8. String KodeBuku;
  9. String Judul;
  10. String Pengarang;
  11. String Penerbit;
  12. int TahunTerbit;
  13. Peminjaman pinjam;
  14. public Buku(String kd, String jdl, String Pengarang,
  15. String Penerbit, int thn){
  16. this.KodeBuku = kd;
  17. this.Judul = jdl;
  18. this.Pengarang = Pengarang;
  19. this.Penerbit = Penerbit;
  20. this.TahunTerbit = thn;
  21. this.pinjam = null;
  22. }
  23. public void SetPinjam(Peminjaman pinjam){
  24. this.pinjam = pinjam;
  25. }
  26. public Peminjaman getPinjam(){
  27. ObjectContainer db = Db4o.openFile("Perpustakaan,yap");
  28. pinjam = new Peminjaman(null,KodeBuku,null);
  29. try
  30. {
  31. ObjectSet Hasil = db.get(pinjam);
  32. pinjam = (Peminjaman)Hasil.next();
  33. }
  34. finally
  35. {
  36. db.close();
  37. }
  38. return pinjam;
  39. }
  40. }


Membuat Class Anggota


  1. package perpustakaan;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Anggota {
  8. String IdAnggota;
  9. String Nama;
  10. String Alamat;
  11. Peminjaman pinjam;
  12. public Anggota(String Id, String Nama, String Alamat){
  13. this.IdAnggota = Id;
  14. this.Nama = Nama;
  15. this.Alamat = Alamat;
  16. this.pinjam=null;
  17. }
  18. public void SetPinjam(Peminjaman pinjam){
  19. this.pinjam = pinjam;
  20. }
  21. public Peminjaman getPinjam(){
  22. ObjectContainer db = Db4o.openFile("Perpustakaan,yap");
  23. pinjam = new Peminjaman(IdAnggota,null,null);
  24. try
  25. {
  26. ObjectSet Hasil = db.get(pinjam);
  27. pinjam = (Peminjaman)Hasil.next();
  28. }
  29. finally
  30. {
  31. db.close();
  32. }
  33. return pinjam;
  34. }
  35. }



Membuat Class Peminjaman


  1. package perpustakaan;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Peminjaman {
  7. String IdAnggota;
  8. String KodeBuku;
  9. String tglPinjam;
  10. public Peminjaman(String IdAnggota, String KodeBuku, String tglPinjam)
  11. {
  12. this.IdAnggota= IdAnggota;
  13. this.KodeBuku = KodeBuku;
  14. this.tglPinjam = tglPinjam;
  15. }
  16. }


Pada main program


  1. package perpustakaan;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Main {
  8. public static void main(String[] args) {
  9. ObjectContainer db
  10. = Db4o.openFile("Perpustakaan.yap");
  11. Anggota anggota1
  12. = new Anggota("A02","Prasetio","Jalan Magelang");
  13. Anggota anggota2
  14. = new Anggota("A35","Antonius","Jalan Sagan");
  15. Buku buku1 = new Buku("CS01",
  16. "Swarm Intelligence","Eric B",
  17. "Oxford university press",1999);
  18. Buku buku2 = new Buku("CS05",
  19. "Simulation","Steward K",
  20. "Addison Wesley",2001);
  21. Buku buku3 = new Buku("CS82",
  22. "Genetic Algorithm","Andrew S",
  23. "McGraw Hill",2003);
  24. Buku buku4 = new Buku("CS34",
  25. "Artificial Neural Net","Fausett",
  26. "Prentice Hall",2002);
  27. Peminjaman pinjam1
  28. = new Peminjaman("A02","CS01","20-11-2008");
  29. Peminjaman pinjam2
  30. = new Peminjaman("A02","CS05","21-11-2008");
  31. Peminjaman pinjam3
  32. = new Peminjaman("A35","CS82","21-11-2008");
  33. Peminjaman pinjam4
  34. = new Peminjaman("A35","CS34","25-11-2008");
  35. anggota1.SetPinjam(pinjam1);
  36. anggota1.SetPinjam(pinjam2);
  37. anggota2.SetPinjam(pinjam3);
  38. anggota2.SetPinjam(pinjam4);
  39. buku1.SetPinjam(pinjam1);
  40. buku2.SetPinjam(pinjam2);
  41. buku3.SetPinjam(pinjam3);
  42. buku4.SetPinjam(pinjam4);
  43. try
  44. {
  45. db.set(anggota1);
  46. db.set(anggota2);
  47. db.set(buku1);
  48. db.set(buku2);
  49. db.set(buku3);
  50. db.set(buku4);
  51. db.set(pinjam1);
  52. db.set(pinjam2);
  53. db.set(pinjam3);
  54. db.set(pinjam4);
  55. System.out.println("Data sudah tersimpan");
  56. }
  57. finally
  58. {
  59. db.close();
  60. }
  61. }
  62. }

Hasil Object Database Menggunakan Object Manager




Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta





Relationship/Association pada Object Database Db4o - Section 2

One-to-Many Relationship

One-to-Many Relationship merupakan bentuk hubungan asosiasi antar object yang sifatnya dua arah. One-to-Many Relationship disebut juga dengan Bidirectional association.

Misalkan Relationship antara Dokter dan Paramedis seperti berikut:



Pada contoh di atas terlihat bahwa seorang Dokter memiliki hubungan Bidirectional Association dengan Paramedis.


Hubungan object yang memiliki bidirectional association direalisasikan dengan korespondensi attribute dari object key yang berhubungan. Selain korespondensi attribute, kedua object harus memiliki akses menggunakan method ke masing-masing object.


Berikut ini adalah contoh kode program dari contoh kasus Dokter dengan Paramedis tersebut:


  1. package appdokter;
  2. /**
  3. * @author Team_dakoop
  4. */
  5. import com.db4o.*;
  6. public class Dokter {
  7. String IdDokter;
  8. String NamaDokter;
  9. String Spesialis;
  10. String IdParamedis;
  11. public Dokter(String idDok, String Nama, String spe)
  12. {
  13. this.IdDokter = idDok;
  14. this.NamaDokter = Nama;
  15. this.Spesialis = spe;
  16. }
  17. public String getIdDokter(){
  18. return IdDokter;
  19. }
  20. public String getNamaDokter(){
  21. return NamaDokter;
  22. }
  23. public String getSpeDokter(){
  24. return Spesialis;
  25. }
  26. public ObjectSet getParamedis(){
  27. ObjectSet Hasil;
  28. ObjectContainer db= Db4o.openFile("Dokter.yap");
  29. Paramedis asisten = new Paramedis (IdDokter,
  30. null,null);
  31. try
  32. {
  33. Hasil = db.get(asisten);
  34. }
  35. finally
  36. {
  37. db.close();
  38. }
  39. return Hasil;
  40. }
  41. }


Membuat Class Paramedis


  1. package appdokter;

  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;

  7. public class Paramedis {
  8. String IdDokter;
  9. String IdPar;
  10. String NamaPar;

  11. public Paramedis(String idPar, String Nama,
  12. String idDokter)
  13. {
  14. this.IdPar=idPar;
  15. this.NamaPar = Nama;
  16. this.IdDokter = idDokter;
  17. }
  18. public String getIdParamedis(){
  19. return IdPar;
  20. }
  21. public String getNamaParamedis(){
  22. return NamaPar;
  23. }
  24. public ObjectSet getDokter()
  25. {
  26. ObjectSet Hasil;
  27. ObjectContainer db = Db4o.openFile("Dokter.yap");
  28. Dokter asisten = new Dokter(IdDokter,null, null);
  29. try
  30. {
  31. Hasil = db.get(asisten);
  32. }
  33. finally
  34. {
  35. db.close();
  36. }
  37. return Hasil;
  38. }
  39. }


Pada main program


  1. package appdokter;

  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;

  7. public class Main {

  8. /**
  9. * @param args the command line arguments
  10. */
  11. public static void main(String[] args) {
  12. // TODO code application logic here
  13. ObjectContainer db = Db4o.openFile("Dokter.yap");
  14. try
  15. {
  16. db.set(new Dokter("111","Dr. Hadi","Jantung"));
  17. db.set(new Dokter("222","Dr. Agus","Kulit"));
  18. db.set(new Dokter("333","Dr. Budi","Kelamin"));

  19. db.set(new Paramedis("P01","Susi","222"));
  20. db.set(new Paramedis("P02","Maya","222"));
  21. db.set(new Paramedis("P03","Astuti","111"));
  22. db.set(new Paramedis("P04","Anita","333"));
  23. db.set(new Paramedis("P05","Dewi","111"));
  24. db.set(new Paramedis("P06","Sinta","111"));
  25. System.out.println("Object dokter dan Paramedis sudah tersimpan..");
  26. }
  27. finally
  28. {
  29. db.close();
  30. }
  31. }
  32. }



Hasil Object Database Menggunakan Object Manager



Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta





Relationship/Association pada Object Database Db4o - Section 1

Hubungan yang terjadi antara object yang satu dengan yang lainnya disebut relationship

Relationship antar object terdiri atas 3, yaitu:

  • Association

  • Inheritance (is–a)

  • Aggregation (part-of)


Association

Association/Relationship memiliki jenis-jenis, antara lain:

  • One-to-One Relationship

  • One-to-Many Relationship

  • Many-to-Many Relationship


One-to-One Relationship

One-to-One Relationship merupakan bentuk hubungan asosiasi antar object yang sifatnya satu arah. One-to-one relationship juga disebut dengan Navigation Association atau Unidirectional Association.

Misalkan Relationship antara Suami dan Istri seperti berikut:



Terlihat bahwa Seorang suami hanya mempunyai seorang Istri . Dalam hubungan struktur ini, seorang Suami hanya dapat mengetahui Istrinya, namun tidak untuk sebaliknya.


Berikut ini adalah contoh kode program dari contoh kasus Suami Istri tersebut:


Membuat Class Istri

  1. package married;
  2. /**
  3. @author Team_dakoop
  4. */
  5. public class Istri {
  6. String NamaIstri;
  7. String NamaSuami;
  8. String TanggalMenikah;
  9. public Istri(String Nama, String Suami,
  10. String TglMenikah)
  11. {
  12. this.NamaIstri= Nama;
  13. this.NamaSuami = Suami;
  14. this.TanggalMenikah = TglMenikah;
  15. }
  16. }

Membuat Class Suami
  1. import com.db4o.*;
  2. public class Suami {
  3. String NamaSuami;
  4. public Suami(String Nama){
  5. this.NamaSuami = Nama;
  6. }
  7. public String getIstri()
  8. {
  9. ObjectContainer db = Db4o.openFile("Married.yap");
  10. Istri istri = new Istri(null,NamaSuami,null);
  11. try
  12. {
  13. ObjectSet Hasil = db.get(istri);
  14. istri = (Istri) Hasil.next();
  15. }
  16. finally
  17. {
  18. db.close();
  19. }
  20. return istri.NamaIstri;
  21. }
  22. }


Pada main program


  1. package married;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. import java.*;
  8. public class Main {
  9. public static void main(String[] args) {
  10. ObjectContainer db = Db4o.openFile("Married.yap");
  11. try
  12. {
  13. db.set(new Suami("Anton"));
  14. db.set(new Istri("Marta","Anton",
  15. "29-08-2007"));
  16. db.set(new Suami("Hasan"));
  17. db.set(new Istri("Sinta","Hasan",
  18. "12-03-2008"));
  19. System.out.println("Pasangan Suami Istri");
  20. }
  21. finally
  22. {
  23. db.close();
  24. }
  25. }
  26. }

Hasil Object Database Menggunakan Object Manager



Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta





Akses Database melalui Torque - Bag 2








Compile

Compile dengan javac …

$ javac -sourcepath java/ -d java/ java/app/EmployeeApp.java


Launch

Launch dengan java …

$ java app.EmployeeApp


Sumber : IlmuKomputer.Com


Lisensi Dokumen:

Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.


Eko Budhi Suprasetiawan

ekobs@developerforce.net

(*) Kerjasama IlmuKomputer.Com dan DeveloperForce.Net

Akses Database melalui Torque - Bag 1

Motivasi

Torque bisa meng-generate Java Bean sesuai definisi dalam file XML. Dan juga meng-generate JDBC code. Bahkan Torque bisa digunakan untuk meng-create database dan table.


Persiapan

Persiapkan direktori kerja, dalam contoh ini /home/lab/myjava

Dapatkan Torque library di-extract ke /home/lab/torque-3.1

serta Torque generator di-extract ke /home/lab/torque-gen-3.1


Deskripsi

Sebuah Java Bean akan disimpan/dibaca dari table EMPLOYEE_TBL di database. myproject-schema.xml digunakan untuk memetakan antara property dari EmployeeBean dan column di EMPLOYEE_TBL. database.xml digunakan sebagai database configuration.


Langkah

    1. Copy dan edit build-torque.xml

    2. Tulis build.properties

    3. Tulis myproject-schema.xml

    4. Jalankan Ant

    5. Tulis Torque.properties

    6. Tulis EmployeeApp

    7. Set CLASSPATH

    8. Compile

    9. Launch


build-torque.xml

Agar file-file yg di-generate Torque diletakkan di /home/lab/myjava dan bukan di direktori instalasi Torque.

Copy ke /home/lab/myjava

$ cp /home/lab/torque-gen-3.1/build-torque.xml /home/lab/myjava


lalu edit dari :


menjadi :


Generator Configuration

Simpan di /home/lab/myjava




Mapping

Simpan di sub-directory schema di bawah /home/lab/myjava






Client App

Simpan di sub-directory app di bawah /home/lab/myjava/java


Akses Database Melalui Jaxor - Bag 2





Compile

Compile dengan javac …

$ javac -sourcepath java/ -d java/ java/app/EmployeeApp.java


Launch

Launch dengan java …

$ java app.EmployeeApp





Sumber : IlmuKomputer.Com


Lisensi Dokumen:

Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.


Eko Budhi Suprasetiawan

ekobs@developerforce.net

(*) Kerjasama IlmuKomputer.Com dan DeveloperForce.Net


Akses Database Melalui Jaxor - Bag 2





Akses Database Melalui Jaxor - Bag 1

Motivasi

Jaxor bisa meng-generate Java Bean sesuai definisi dalam file XML. Dan juga meng-generate JDBC code.

Persiapan

Persiapkan direktori kerja, dalam contoh ini /home/lab/myjava

Dapatkan Jaxor library Extract ke : /home/lab/jaxor-3.3

Deskripsi

Sebuah Java Bean EmployeeBean akan disimpan/dibaca dari table EMPLOYEE_TBL di database. employee.jaxor digunakan untuk memetakan antara property dari EmployeeBean dan column di EMPLOYEE_TBL.

Langkah

    1. Tulis build.xml

    2. Tulis mapper.registry

    3. Tulis employee.jaxor

    4. Jalankan Ant

    5. Tulis EmployeeApp.java

    6. Set CLASSPATH

    7. Compile


build.xml

Simpan di sub directory employee di bawah /home/lab/myjava

Mapper

Simpan di /home/lab/myjava

Mapping

Simpan di /home/lab/myjava


Ant

Jalankan Ant dari /home/lab/myjava

Client App

Simpan di sub-directory app di bawah /home/lab/myjava/java




Akses Database melalui Hibernate - Bag 2

Client App

Simpan di sub directory app di bawah /home/lab/myjava






Compile

Compile dengan javac …

$ javac app/EmployeeApp.java


Launch

Launch dengan java …

$ java app.EmployeeApp





Sumber : IlmuKomputer.Com


Lisensi Dokumen:

Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.


Eko Budhi Suprasetiawan

ekobs@developerforce.net

(*) Kerjasama IlmuKomputer.Com dan DeveloperForce.Net

Akses Database melalui Hibernate - Bag 1

Motivasi

Hibernate membebaskan developer untuk menulis SQL melalui JDBC dalam mengakses database.


Persiapan

Persiapkan direktori kerja, dalam contoh ini /home/lab/myjava

Dapatkan Hibernate library di-extract ke /home/lab/hibernate-1.2


Deskripsi

Sebuah Java Bean EmployeeBean akan disimpan/dibaca dari table EMPLOYEE_TBL di database. EmployeeBean.hbm.xml digunakan untuk memetakan antara property dari EmployeeBean dan column di EMPLOYEE_TBL Tulis hibernate.properties digunakan sebagai database configuration.

Langkah

  1. Tulis EmployeeBean.java
  2. Tulis hibernate.properties
  3. Tulis EmployeeBean.hbm.xml
  4. Tulis EmployeeApp.java
  5. Set CLASSPATH
  6. Compile
  7. Launch


EmployeeBean

Simpan di sub directory employee di bawah /home/lab/myjava



Configuration

Simpan di sub directory employee di bawah /home/lab/myjava

Mapping

Simpan di sub directory employee di bawah /home/lab/myjava




Akses Database melalui Castor - Bag 2

Configuration

Simpan di /home/lab/myjava


Mapping

Simpan di /home/lab/myjava


Client App

Simpan di sub-directory app di bawah /home/lab/myjava






































Compile

Compile dengan javac …

$ javac app/EmployeeApp.java


Launch

Launch dengan java …

$ java app.EmployeeApp


Sumber : IlmuKomputer.Com


Lisensi Dokumen:

Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.


Eko Budhi Suprasetiawan

ekobs@developerforce.net

(*) Kerjasama IlmuKomputer.Com dan DeveloperForce.Net


Selasa, 28 Oktober 2008

Membuat Program Database dengan Netbeans IDE 5.5.1 dan Ms.Access

Kita akan membuat suatu program database menggunakan Netbeans IDE 5.5.1 dan Database Ms.Access. Mungkin Software Netbeans merupakan hal yang baru buat kita. YA memang sebenarnya program Netbeans ini merupakan software yang digunakan untuk membuat suatu program yang berbasis JAVA. Dulu kita masih menggunakan tampilan putih NOTEPAD untuk membuat aplikasi JAVA. Akan tetapi sejalan perkembangan NOTEPAD perlahan mulai digantikan oleh TEXTPAD karena fasilitas yang disediakan oleh TEXTPAD ini terkesan lebih lengkap dan informatif dibanding dengan NOTEPAD. Akan tetapi ketika kita melirik kebelakang ternyata TEXTPAD punya kekurangan lagi, yaitu kita masih harus mengetik script untuk membuat komponen program. Dan ternyata kekurangan tersebut ditutupi oleh adanya Netbeans ini. Yaitu menyediakan komponen komponen tanpa harus mengetikkan script untuk membuatnya layaknya Bahasa Pemrograman GUI lainnya. Langsung aja kita buat project baru kita :

B erikut tampilan program yang akan kita buat :

Langkah- Langkah Pengerjaan :
  1. Buat database Koperasi dan tabel Anggota dengan ketentuan sebagai berikut :

Noang - Text – 5

Nama - Text - 25

Alamat - Text - 30

Jkel - Yes/no

Agama - Text - 1

NoKTP - Text - 15

NoTelp - Text – 12

Simpanan - Number – LongInt


  1. Buat desain form seperti yang terlihat pada gambar. Pada form terdapat komponen JTextField, JComboBox, JRadioButton, JPanel, JButton.

  2. Ganti nama komponen yang sudah kita masukkan terutama untuk komponen JTextField, JComboBox, JButton, JRadioButton dengan cara dan ketentuan sebagai berikut :


  1. Pada project kali ini penulis menggunakan ketentuan nama komponen sebagai berikut untuk memudahkan pemahaman dalam pembuatan kode program.

Komponen Perubahan Nama Komponen :


JTextField No Anggota — no

JTextField Nama — nama

JTextField Alamat — alamat

JComboBox Agama — agama

JRadioButton Jkel — RPria dan RWanita

JTextField No KTP — noktp

JTextField No. Telp — notelp

JTextField Simpanan — simpanan

JButton Simpan — bsimpan

JButton Data Baru — bbaru

JButton Keluar — bkeluar


  1. Untuk mengisi ComboBox agama anda klik pada komponen ComboBox agama kemudian pada properties cari model, klik maka akan tampil kotak dialog sebagai berikut :


  1. Tambahkan komponen buttongroup pada form perhatikan potongan gambar berikut :


  1. Drag ke form anda. Akan tetapi anda tidak akan bisa melihat wujudnya.hehehehehe Tapi untuk mengubah nama komponennya maka silahkan anda masuk ke navigator sebelah kiri monitor anda. Ganti nama komponennya dengan nama “bgjkel”



  1. S etelah memasukkan komponen ButtonGroup dan mengubah namanya maka klik pada komponen RPria dan RWanita kemudian pada properties cari button group kemudian ubah menjadi bgjkel.

  1. Setelah anda mengubah nama setiap komponen maka sekarang saatnya masuk pada proses Coding.



Kode Program :

- Di bawah Tab nama project anda klik source :

Dibawah package anda ketikkan perintah import berikut untuk mengambil perintah-perintah sql.

import java.sql;

- Kemudian deklarasi variabel koneksi, resultset, statement dan variabel yang lain yang diperlukan

Di bawah public class ketikkan variabel berikut :

//deklarasi variabel global
Connection Con;
ResultSet RsAng;
Statement StatAng;

//variabel untuk agama
String sagm = “1″;
//variabel untuk jenis kelamin
Boolean bjkel = true;
//variabel global jika data ditemukan
Boolean ada = false;

- Kemudian dibawah public nama_project (dibawah pengenalan variabel) ketikkan perintah koneksi database dan tabel berikut :

//koneksi
try
{
String fdata = “z:\\java1\\NetBeans\\Koperasi.mdb”;
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);

//koneksi langsung ke database tanpa dsn
Con= DriverManager.getConnection(”jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=” + fdata);

//menunjukkan proses pencarian resultset bisa di update
StatAng= Con.createStatement( RsAng.TYPE_SCROLL_SENSITIVE, RsAng.CONCUR_UPDATABLE );
RsAng = StatAng.executeQuery(”Select* from Anggota”);

}
catch(Exception e)
{
System.err.println(”Koneksi gagal !” + e.getMessage()); } //getMessage untuk menampilkan pesan

- Setelah proses koneksi berhasil maka saatnya kita masuk ke tombol simpan. Ketikkan kode program berikut :

private void bsimpanActionPerformed(java.awt.event.ActionEvent evt) {

// Untuk simpan data tambahkan code berikut :

try

{

RsAng.updateString(”Noang”, no.getText());

RsAng.updateString(”Nama”, nama.getText());

RsAng.updateString(”Alamat”, alamat.getText());

RsAng.updateString(”Agama”, sagm);

RsAng.updateBoolean(”Jkel”, bjkel);

RsAng.updateString(”NoKTP”, noktp.getText());

RsAng.updateString(”NoTelp”, notelp.getText());

RsAng.updateDouble(”Simpanan”, Double.parseDouble(simpanan.getText()));

if(ada)

{

//mengedit data yang sudah ada

RsAng.updateRow();

javax.swing.JOptionPane.showMessageDialog(null, “Data Telah Diedit !”);

}

else

//menyisipkan record baru

RsAng.insertRow();

javax.swing.JOptionPane.showMessageDialog(null, “Data Telah Tersimpan !”);

}

catch(Exception e)

{

javax.swing.JOptionPane.showMessageDialog(null, “Data Belum Tersimpan !” + e.getMessage());

}

}

- Kode Program untuk RadioButton Pria :

private void RPriaActionPerformed(java.awt.event.ActionEvent evt) {

// tambahkan code berikut:

bjkel = true;

}

- Kode Program untuk RadioButton Wanita :

private void RWanitaActionPerformed(java.awt.event.ActionEvent evt) {

// tambahkan code berikut:

bjkel = false;

}

- Untuk ComboBox agama ketikkan kode program berikut ini :

private void agamaActionPerformed(java.awt.event.ActionEvent evt) {

// Baca Source objectnya masih JcomboBox

javax.swing.JComboBox soagama = (javax.swing.JComboBox)evt.getSource();

//Membaca Item Yang Terpilih — > String

String sagama = (String)soagama.getSelectedItem();

//pengujian sagama

if (sagama.equals(”Islam”))

sagm = “1″;

else if (sagama.equals(”Kristen”))

sagm = “2″;

else if (sagama.equals(”Hindhu”))

sagm = “3″;

else if (sagama.equals(”Budha”))

sagm = “4″;

else if (sagama.equals(”Konghu Chu”))

sagm = “5″;

}

- Untuk Tombol Data Baru ketikkan program berikut ini :

private void bbaruActionPerformed(java.awt.event.ActionEvent evt) {

// tambahkan code berikut :

no.setText(”");

nama.setText(”");

alamat.setText(”");

noktp.setText(”");

notelp.setText(”");

simpanan.setText(”");

}

- Untuk komponen Button Keluar ketikkan kode program berikut ini :

private void bkeluarActionPerformed(java.awt.event.ActionEvent evt) {

//Tutup Koneksi

try

{

Con.close();

RsAng.close();

StatAng.close();

Con = null; RsAng = null; StatAng = null;

}

catch (Exception e){}

System.exit(0);

}





Senin, 27 Oktober 2008

Evolusi Database menuju OODB - Mata rantai yang tidak hilang

Nenek moyang dari yang namanya database sebenernya sudah ada sejak jaman nenek moyang manusia , sesuatu yang dikumpulkan dan di arrange sedemikian rupa atau kumpulan apapun itu bisa dibilang bentuk primitive dari database. Tapi dari pada berlama2 ngebahas masalah enek moyang gimana nih kalo kita meloncat ke jaman yang sedikit lebih maju, jadi istilahnya kita meloncati jaman pre - histories (kita sudah melampau jaman yang dibilang sebagai jaman-nya dinosaurus,jaman es dan teori2 soup organic,maklum background saya biology hehe)

Ada yang mendefinisaikan kalo database itu punya 2 tipe : ada yang flat file dan relational . Dan umumnya falt file database ini (kalo boleh saya bilang database) disimpan dengan pembatas delimiter,dia diakses dan dikenali dengan adanya koma,tab,atau apapun itu yang telah disepakati. Ini salah satu cuplikan comment about flat file : One way to think of a flat file database program is to picture a spreadsheet. Each row is a block of information, like a customer contact or an inventory item. Each column is a piece of that block, like name, address, item number, or price. Kalo boleh saya tambahkan nih, flat file tergantung banget sama program yang mengaksesnya dan caranya direpresentasiin supaya bisa ditampilkan.

Dan yang satu lagi … tdk seperti teori evolusi yang kehilangan spesiesnya,si relational database ini muncul dengan mata rantai yang lengkap “neng” ini loh plus 12 definisi yang menurut saya gax semua bisa diterapkan/dipenuhi, en yang ini gax usah di perdebatkan, sudah terbukti koq emang begitu, Tapi umumnya ada 3 kunci pokok yang menjadi tumpuan DBMS : 1) bahasa query,data storage en data access 2) integritas aplikasi 3) arsitektur proses. so back to mata rantai:
The concept of relational databases was first described by Edgar Frank Codd (almost exclusively referenced as E. F. Codd in technical literature) in the IBM research report RJ599, dated August 19th, 1969.1 However, the article that is usually considered the cornerstone of this technology is "A Relational Model of Data for Large Shared Data Banks," published in Communications of the ACM(Vol. 13, No. 6, June 1970, pp. 377-87). Only the first part of the article is available online.
Additional articles by E. F. Codd throughout the 1970s and 80s are still considered gospel for relational database implementations. His famous "Twelve Rules for Relational Databases"2 were published in two Computerworld articles "Is Your DBMS Really Relational?" and "Does Your DBMS Run By the Rules?" on October 14, 1985, and October 21, 1985, respectively. He has since expanded on the 12 rules, and they now number 333, as published in his book "The Relational Model for Database Management, Version 2" (Addison -Wesley, 1990). --- > sedikit iklan
Btw, twelve rule nya gax perlu lah dicritain, entar smuanya pada ngantuk .. hehe
En disinilah rekan di kenalkan dengan yang namanya Normalisasi, Primary Key, Foreign key dsb dsb

Dan Ada relational database seperti MySQL atau Oracle ,memang jauh sih kalo dibandingkan dengan database yang sophisticated demikian, lalu bagaimana dengan Clipper, Foxpro, Visual Foxpro atau Access? Ada diposisi manakah mereka? Mengingat mereka tidak setangguh MYSQL,Oracle,dsb ya entar kita ngomongin.Ini pula cuplikan komentarnya berkenaan si relational database : A more comprehensive database system will enable you to track all of your information without having to use many programs. Programs that are designed to handle several tasks will utilize databases that are called ‘Relational’. These types of database systems allow you to link one type of data, like customers, too ther types of data, like invoices and appointments. Relational database systems are much more capable than flat file systems, but they are also more complex.

Tapi frenz kita potong dulu pembahasan tentang Relational Database, coba dech kita liat perkembangan menyeluruh dari evolusi database, ditinjau dari proses perkembangan protoceratops menjadi triceratops (tau gax kalo kamu2 nonton Jurassic park,ada dino yang makan sayur2ra, bagusnya di jurrasic dia sudah punya tanduk 3 dan bertameng(makanya namanya tri-ceratops), sedangkan yang bakal kita bahas itu dari protoceratos si dino bertameng doank hehe./ Kita tinjau dari tahun 60- an yach :

*) Model Flat ->gax tau nih kapan,sorry yach,en kalo ada yang mau kasih koreksi sy trimaksih skali. Tapi gax pa2 kok karena topik pantau kita berkisar di Database Relational

1968 - > Model data Hirarki

1970 -> Model jaringan (Network Model)

1980 - > relational model ,u know SQL92?( Masa2 kejayaan Relational Database spt: VFP,Access,Oracle,dsb dsb)

1990 - > Generasi pertama OODB

1997 -> ORDBMS.(disebut juga sebagai generasi ke-dua ODB) Tau SQL99 nah itulah : ) Tapi Kayak MySQL ajah katanya dah dkung SQL99 koq,.. apalagi yang laen2. Kayak ini dech Oracle 7.x termasuk produk RDBMS, en Oracle 8.X termasuk produk ODBMS


Sumber :komunitas foxpro indonesia-fox-id.org


Akses Database melalui Castor - Bag 1

Motivasi
Castor membebaskan developer untuk menulis SQL melalui JDBC dalam mengakses database.

Persiapan
Persiapkan direktori kerja, dalam contoh ini /home/lab/myjava
Dapatkan Castor library Di sini dipakai : castor-0.9.5.2.jar

Deskripsi
Sebuah Java Bean EmployeeBean akan disimpan/dibaca dari table EMPLOYEE_TBL di database. mapping.xml digunakan untuk memetakan antara property dari EmployeeBean dan column di EMPLOYEE_TBL. database.xml digunakan sebagai database configuration.

Langkah
1. Tulis EmployeeBean.java
2. Tulis database.xml
3. Tulis mapping.xml
4. Tulis EmployeeApp.java
5. Set CLASSPATH
6. Compile
7. Launch

EmployeeBean
Simpan di sub directory employee di bawah /home/lab/myjava

employee/EmployeeBean.java
package employee;
import java.util.Date;
public class EmployeeBean
{
/* DATA */
private String id;
private String name;
private String department;
private String jobTitle;
private Date hireDate;
private boolean permanentEmployee;
private double salary;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return this.id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setDepartment(String department)
{
this.department = department;
}
public String getDepartment()
{
return this.department;
}
public void setJobTitle(String jobTitle)
{
this.jobTitle = jobTitle;
}
public String getJobTitle()
{
return this.jobTitle;
}
public void setHireDate(Date hireDate)
{
this.hireDate = hireDate;
}
public Date getHireDate()
{
return this.hireDate;
}
public void setPermanentEmployee(boolean permanentEmployee )
{
this.permanentEmployee = permanentEmployee;
}
public boolean getPermanentEmployee()
{
return this.permanentEmployee;
}
public void setSalary(double salary)
{
this.salary = salary;
}
public double getSalary()
{
return this.salary;
}
}

Java DB Apache Derby

Pada JDK 1.6 udah ada embeded database yang disebut Java DB. Database ini awalnya adalah Apache Derby yang dibranding ulang, jadi sebenernya ya barang yang sama dengan nama yang berbeda. Dengan menggunakan Hibernate, bisa akses database tanpa perlu menginstal Mysql.
Kofigurasi jdbc dan hibernate dialect untuk MySQL :
jdbc.username=root``
jdbc.password=admin
jdbc.url=jdbc:mysql://localhost:3306/databasename
jdbc.driver=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
Dengan Java DB berubah menjadi :
jdbc.username=root
jdbc.password=admin
jdbc.url=jdbc:derby://localhost:1527/databasename
jdbc.driver=org.apache.derby.jdbc.ClientDriver
hibernate.dialect=org.hibernate.dialect.DerbyDialect
Enaknya lagi, di netbeans sudah ada database client management untuk Java DB ini, kita bisa membuat database baru, membuat table, menambahkan column ke dalam table, melakukan query dan membuat query dengan visual query designer.


Kalau di linux, database Java DB akan diletakkan di :
$home/.netbeans-derby/databasename
Delete column tinggal pake query saja bisa
alter table [tablename] drop column [columnname];
Di NetBeans 6.0.1 secara default tidak mempunyai library Java DB, jadi driver Java DB harus ditambahkan ke dalam library netbeans secara manual dari jar, nama jar-nya adalah DerbyClient.jar. anda bisa search file di dalam folder instalasi netbeans untuk mandapatkan file DerbyClient.jar
Proses setup Java DB tidak susah, hanya perlu beberapa langkah saja :
1. Buka tab service dari NetBeans (lebih baik gunakan versi 6.1)
2. Expand node databases, dan Klik kanan node Java DB kemudian pilih menu create database
3. Masukkan nama database, username dan password yang sesuai
4. Klik OK
dan database anda sudah siap untuk digunakan.
(Sumber : © 2006–2007 Life,Contribute!!! — Sitemap — Cutline by Chris Pearson)




Script Koneksi Java dan PostgreSQL menggunakan JDBC

import java.sql.*;
public class CaraKoneksi {
public static void main(String[] args) {
try {
Class.forName( "org.postgresql.Driver" );
} catch (ClassNotFoundException cnfe) {
System.err.println("No suitable driver " + cnfe);
}
try {

String url = "jdbc:postgresql:localhost:5432/nama_database";

String user = nama_user; // Sesuaikan dengan nama user di database

String pass = password; // Sesuaikan dengan password user

Connection conn = DriverManager.getConnection
(url, user, pass);

// coding untuk menampilkan isi database di sini

} catch (SQLException se) {
System.err.println("ada yg salah di Syntax SQL" + se.getMessage());

} catch (Exception e) {
System.err.println("Apa yach errornya : " + e.getMessage());
}
}
}



Sebelumnya, kamu harus sudah mempunyai JDBC Driver untuk postgresql, setelah download, tinggal ekstrak file .jar itu ke folder mana saja yang kamu suka, asalkan setting classpath mengarah ke file yg berekstensi .jar tersebut




Kamis, 23 Oktober 2008

Koneksi Java dan PostgreSQL menggunakan ODBC

  1. Dari control panel, administratif tools, disitu ada data source odbc

  2. Install driver postgree SQL

  3. Tambahin hostname,port,database,sama userid

  4. Odbc sudah beres

  5. Untuk keberhasilan koneksi, download aplikasi, http://om4gus.blogspot.com/2008/04/appquery-akses-java-ke-semua-jenis.html

  6. Jalankan aplikasinya

  7. Code koneksi

public void testDriver(){
//String dbDrv = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
//String dbUrl = "jdbc:microsoft:sqlserver://localhost;DatabaseName="+db;
try{
Class.forName(tDriver.getText());
con = DriverManager.getConnection(tKoneksi.getText(),tUser.getText(),tPass.getText());
stmt=con.createStatement();
lStatus.setText("Driver Connected");
}catch(Exception ce){
System.out.println(ce.toString()+"1");
lStatus.setText(ce.toString());//lStatus.getText()+"\n"+
cbTabel.setModel(new DefaultComboBoxModel());
}
}


  1. Fungsi Tes Driver


testDriver();
String perintah="select * from tMhs";
ResultSet hasil=stmt.executeQuery(perintah);
System.out.println(hasil.getObject());

Sumber : (http://om4gus.blogspot.com/2008/07/appquery-in-action-koneksi-java.html)





Koneksi java 1.5 dengan Oracle 9i

  1. Untuk menghubungkan java dengan database oracle di butuhkan sebuah driver yaitu jdbc, secara default oracle telah menyediakan jdbc di dalam folder hasil instalasinya, tepatnya di oracle/ora92/jdbc/lib/classes12.jar

  2. Setelah mendapatkan file classes12.jar maka buatlah folder jdbc di direktori c

C:/jdbc

  1. Dan taruhlah file classes12.jar di sana

  2. Kemudian seting class pathnya dengan value “C:\jdbc\classes12.jar”

  3. Anda dapat melakukan testing variabel sistem dari Command Prompt dengan perintah : echo %CLASSPATH% bila pada console tampil path ke driver maka CLASSPATH berhasil di set.

  4. Kemudian buatlah beberapa baris untuk mengecek koneksi nya apakah sudah berhasil ataukah belum.

  5. Ini contoh skrip untuk mencoba koneksi java oracle apakah sudah bejalan ataukah belum

import java.sql.*;

class dbAccess {

public static void main (String args []) throws SQLException

{

DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());

//DriverManager.registerDriver (new oracle.jdbc.driver());

Connection conn = DriverManager.getConnection

(”jdbc:oracle:thin:@10.4.70.41:1521:mega”,”pav”,”pav”);

// @machineName:port:SID, userid, password

Statement stmt = conn.createStatement();

ResultSet rset = stmt.executeQuery(”select * from clogin”);

while (rset.next())

System.out.print (rset.getString(”id”));

//System.out.print (rset.getString(”nama”));

// System.out.println (rset.getString(3));// Print col 1

stmt.close();

}

}

  1. Sesuaikan nama database,host,user dan password database dengan database yang anda miliki.

  2. Run java yang pake odbc

Koneksi Java & MySQL via Konsole di Linux

Salah satu program yang menarik untuk ditest melalui konsole sebelum nanti mulai menggunakan IDE adalah program koneksi ke database menggunakan JDBC. Mengapa ini menarik karena ada beberapa aspek khas Java yang terkandung didalamnya.

Kita bisa mencobanya dengan melakukan koneksi ke database MySQL melalui Java. Untuk melakukan hal ini, silakan lakukan tutorial sebagai berikut :

  1. Instalasi database server MySQL. Untuk melakukan instalasi database MySQL pada OpenSUSE silakan merujuk pada panduan http://www.vavai.com/index.php?/categories/7-Migrasi-Database

  2. Jalankan service MySQL melalui YAST | SYSTEM | SYSTEM SERVICE (RUNLEVEl)

  3. Download MySQL Connector J melalui alamat http://www.mysql.com/products/connector/j/ . Ambil versi terbaru. Pada saat panduan ini ditulis, versi terbaru adalah mysql-connector-java-5.1.5

  4. Ekstrak file yang didownload dan ambil file mysql-connector-java-5.1.5-bin.jar. Sesuaikan dengan versi MySQL Connector yang didownload.

  5. Copy file jar tersebut ke lokasi library. Untuk keselarasan dengan panduan saya yang lain, silakan copy ke folder /opt/jdk1.6.0/lib

  6. Buka konsole dan ketik perintah

export CLASSPATH=.:/opt/jdk1.6.0/lib/mysql-connector-java.jar:

  1. Untuk kemudahan, perintah diatas bisa di masukkan kedalam file .bash_profile yang ada di home folder masing-masing

  2. Buka teks editor (kate misalnya) dan ketik kode program berikut ini :

public class TestMysql { public static void main(String args[]) {

try {

/* Test loading driver */

String driver = "com.mysql.jdbc.Driver";System.out.println( "=> loading driver:" );

Class.forName( driver );

System.out.println( "OK" );/* Test the connection */

String url = "jdbc:mysql://localhost/test";System.out.println( "=> connecting:" );

java.sql.DriverManager.getConnection( url, "guest", "" );

System.out.println( "OK" );

}

catch( Exception x ) {

x.printStackTrace();

}

}

}



  1. Simpan dan beri nama TestMysql.java

  2. Buka konsole (ALT+F2, konsole)

  3. Lakukan kompilasi

javac TestMysql.java

  1. Jika tidak ada pesan kesalahan, lanjutkan dengan menjalankan program

java TestMy



Catatan :

Program diatas menggunakan database MySQL lokal (localhost) dengan database test, user name guest dan password kosong. Setting ini adalah setting default dan selalu ada pada MySQL. Jika ingin memodifikasi, sesuaikan dengan kondisi setting MySQL anda.

Kemungkinan Kesalahan :

  1. java: command not found, biasanya setting PATH belum benar. Coba test dengan menjalankan perintah echo $PATH pada konsole dan apakah responnya menunjukkan lokasi JDK yang diinstalasi

  2. class TestMysql is public, should be declared in a file named TestMysql.java. Terjadi jika nama file berbeda dengan nama class. Ingat bahwa Java menganut case sensitive, jadi TestMysql berbeda dengan testmysql

  3. Cannot resolve symbol symbol : class stringlocation: class TestMysqlpublic static void main(string[] args)

^

1 error

Masalah biasanya karena kesalahan ketik

  1. Exception in thread “main” java.lang.NoClassDefFoundError: TestMysql, biasanya terjadi karena menjalankan file class dengan ekstension. Semestinya java TestMysql, bukan java TestMysql.java ataupun TestMysql.class


(Sumber : http://java.vavai.com/)





Database Untuk Java

PostgreSQL

PostgreSQL (www.PostgreSQL.org) didisain untuk skala besar, memiliki ciri berorientasi objek, namun tetap dapat digunakan layaknya RDBMS pada umumnya. Para pengembangnya (dulu) mengutamakan kelengkapan feature ketimbang dukungan penuh akan standar SQL. Dalam perjalanannya, kelebihan feature ini justru membuat Postgres semakin powerful dan membuatnya dapat disejajarkan dengan database besar lainnya seperti Oracle. Salah satu contoh standar SQL yang belum dipenuhi oleh PostgreSQL saat ini (versi 6.5.3) adalah referential integrity dan outer-join. Meski demikian, programmer Postgres tetap merencanakan untuk membuatnya memiliki standar SQL yang sudah ditetapkan. Fasilitas standar lain yang telah didukung adalah trigger dan function.

Function dalam PostgreSQL sangat unik karena PostgreSQL tidak menetapkan built-in language untuk penulisan function. PostgreSQL menyerahkan kepada pemakai untuk memilih sendiri bahasa yang diinginkan yang disebut Procedural Language. Pada saat deklarasi function, Anda harus menyebutkan bahasa yang digunakan. Pada versi 6.5.3 procedural language yang tersedia adalah pgSQL dan Tcl. Jadi script function yang dideklarasikan akan diterjemahkan oleh library yang bersangkutan (tergantung bahasa yang dipilih) untuk selanjutnya library tersebut melakukan koordinasi dengan library PostgreSQL.

Tools yang tersedia cukup banyak dan sangat berguna seperti:

pg_dump: konversi objek database menjadi script SQL

pgaccess: drag & drop-nya cukup menyenangkan

PostgreSQL didukung oleh banyak bahasa (atau Postgres mendukung banyak bahasa?), antara lain: C++, Java, Perl, Tcl, PHP3 dan Python. Library untuk ODBC dan JDBC juga telah tersedia, sehingga bahasa lainnya yang mendukung keduanya dapat mengakses PostgreSQL. Source lengkapnya dapat Anda peroleh di situsnya, dan juga tersedia di distribusi Linux seperti SuSE, RedHat dan Mandrake.

MySQL

Ringan, begitulah kesan para pemakai database yang tergolong open-source ini. MySQL (www.mysql.org) tergolong database yang paling banyak digunakan untuk web database. Meski ia bukan SQL server yang sesungguhnya (tidak memiliki fasilitas untuk mendukung transaksi seperti begin transaction, commit, dan rollback), MySQL cukup cepat dan sangat banyak library serta contoh program yang dapat digunakan.

Komunitas Linux sangat familiar dengan produk ini. Namun tidak dianjurkan untuk aplikasi office seperti inventory, accounting dan aplikasi kritis lainnya. Karena dari ``niatan'' rancang-bangunnya berbeda, MySQL tidak bisa dibandingkan dengan database berbasis SQL lain seperti PostgreSQL atau Interbase.

MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan user. Untuk query yang dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari Postgresql dan lima kali lebih cepat ketimbang Interbase. Umumnya MySQL disertakan dalam distribusi Linux seperti SuSE, RedHat, Mandrake dan Slackware.

DB2

Sering disebut sebagai DB2 Universal Database. DB2 dari IBM juga telah komitmen untuk mendukung Linux dan telah mengembangkan beberapa tools demi kemudahan penggunanya. DB2 tersedia dalam berbagai platform dan tergolong VLDB (Very Large Database). Dukungannya terhadap Java secara penuh (Control Center - adminitration tool - tersedia dalam versi Java) membuatnya makin diterima oleh berbagai kalangan serta telah meraih sejumlah besar penghargaan (seperti yang telah dikeluarkan VARBusiness dan ComputerWorld). Meski cukup ``raksasa'', DB2 belum open-source dan sering dibandingkan dengan database komersial lainnya. Versi personal tersedia di www.software.ibm.com/data/db2/linux, dan dapat didownload secara cuma-cuma.

Oracle

Mayoritas para pengambil keputusan di bidang IT telah memahami bahwa produk ini cukup besar dan powerfull. Tergolong VLDB dan memiliki sejumlah besar tools yang sangat memudahkan para pengembang dalam membangun aplikasi bisnis. Di Linux, Oracle memiliki WebDB yang terintegrasi dengan Web Server Apache (www.apache.org). WebDB memudahkan programmer memanipulasi objek database seperti membuat database, user, sampai mencetak laporan. Semuanya dapat dilakukan dengan menggunakan browser. Situsnya dapat Anda temui di www.oracle.com

Referensi

*www.linuxjournal.com

* www.zdnet.com

* www.db2.com





JDBC (Java Database Conectivity)

Java menyediakan JDBC yang berfungsi untuk berhubungan dengan database.

Database yang didukung oleh Java cukup banyak, seperti : MySQL, Postgres, Oracle, B2, Access dan lain-lain.

JDBC berisi kumpulan kelas-kelas dan interface yang ditulis dengan bahasa Java.


Yang dilakukan JDBC

  • Membangun koneksi ke data source

  • Mengirim statement ke data source

  • Memproses hasil statement tersebut


Java menyediakan tiga produk JDBC:

  • JDBC driver manager

  • JDBC driver test suite

  • JDBC ODBC bridge


ODBC vs JDBC

  • ODBC tidak cocok dipakai langsung dengan Java karena ditulis dengan bahasa C, pemanggilan dari Java ke C memiliki masalah keamanan, implementasi, robustness, dan portabilitas sistem.

  • Penerjemahan dari C ke Java tidak akan berhasil baik. Contoh: Java tidak memiliki pointer.

  • ODBC sulit dipelajari karena optionnya yang sulit walaupun untuk query yang sederhana.

  • Java API diperlukan untuk mempertahankan solusi “murni Java”, agar dapat berjalan di berbagai platform. Karena ODBC harus diinstall dahulu di setiap client dan tidak semua platform.


Keunggulan JDBC

  • Mempertahankan data enterprise yang ada

  • Menyederhanakan development enterprise

  • Tidak memerlukan konfigurasi pada jaringan komputer

  • Akses penuh ke meta data

  • Koneksi database menggunakan URL dan DataSource (yang meyediakan connection pooling dan distributed transaction)


Arsitektur JDBC











  • Lapisan Vendor Specific JDBC Driver merupakan driver JDBC yang dikeluarkan oleh para vendor pengembang RDBMS.

  • Sedangkan JDBC- ODBC Bridge berfungsi sebagai perantara untuk mengakses database melalui ODBC driver.

  • Baik JDBC driver maupun JDBC-ODBC Bridge diatur dan dapat diakses melalui JDBC Driver Manager.

  • Aplikasi yang kita kembangkan untuk mengakses database dengan memanfaatkan JDBC akan berinteraksi dengan JDBC Driver Manager.


JDBC API

  • Tersedia dalam paket java.sql dan javax.sql.

  • DriverManager – memanggil driver JDBC ke memori, dan dapat juga digunakan untuk membuka koneksi ke sumber data.

  • Connection – mempresentasikan suatu koneksi dengan suatu data source, juga digunakan untuk membuat objek Statement, PreparedStatement dan CallableStatement.

  • Statement – mempresentasikan suatu perintah SQL, dan dapat digunakan untuk menerima objek ResultSet.

  • PreparedStatement – merupakan alternatif untuk objek Statement SQL yang telah terkompilasi awal.

  • CallableStatement – mempresentasikan suatu stored procedure, dan dapat digunakan untuk menjalankan stored procedures yang terkompilasi dalam suatu RDBMS yang mendukung fasilitas tersebut.

  • ResultSet – mempresentasikan sebuah hasil dari database yang dihasilkan dari statemen SQL SELECT.

  • SQLException – suatu class exception yang membungkus kesalahan (error) pengaksesan database.

  • javax.sql adalah bagian dari J2SE 1.4 dan J2EE 1.3. Paket ini memberikan beberapa tambahan yang telah tersedia pada java.sql :

    • DataSource – Objek ini dapat digunakan untuk penempatan DriverManager untuk lebih efisien dalam melakukan koneksi ke database (yang didefinisikan melalui data source).