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