Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8


Controller? Maksud Controller disini bukan Controller di MVC (Model View Controller), melainkan sebutan untuk Data Access Objek. Jika anda belum tau apa itu Data Access Object, anda bisa melihat tutorialnya dulu disini :

Jika dalam project kita terdapat 50 kelas Entitas, itu artinya kita harus membuat 50 buat DAO atau disini kita sebut saja Controller :D. Dan untuk membuat 50 Controller itu bukan kerjaan yang sedikit :( , ini bisa membuat waktu kita tidak efektif. Lantas bagaimana caranya agar kita dapat membuat Controller secara otomatis?

Nah! Artikel ini dibuat untuk menjawab pertanyaan tersebut :D

Project yang Digunakan

Untuk membuat Controller, yang wajid ada adalah Entity Class JPA, jadi jika dalam project kita sudah terdapat Entity Class untuk JPA, itu artinya kita dapat membuat Controller otomatis menggunakan NetBeans.

Membuat Controller

Untuk membuat controller otomatis, caranya sangat mudah. Tahap pertama adalah membuat file seperti biasa, caranya lewat menu File -> New File. Setelah itu pada bagian Categories, pilih bagian Persistence dan pada bagian File Types, pilih JPA Controller Classes from Entity Classes :

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Setelah itu klik tombol Next. Setelah itu pilih kelas Entity yang akan dibuatkan Controller nya. NetBeans akan secara otomatis mendeteksi kelas-kelas yang termasuk Entity Class, misal saya buat Controller untuk semua entity class :

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Setelah itu klik tombol Next. Lalu setelah itu pilih lokasi package tempat akan dibuatnya kelas-kelas Controller :

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Setelah itu klik tombol Finish. Dan selesai :D sekarang kita sudah memiliki kelas-kelas Controller untuk semua kelas yang tadi kita pilih untuk dibuatkan Controllernya :

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

Membuat Class Controller JPA dari Entity Class Secara Otomatis Menggunakan NetBeans IDE 6.8

“Taman kalbu berair dan segar, dengan bunga melati, mawar dan pohon cemara. Kata-kataku membawa aroma mereka. Ikuti aroma itu ke Taman Firdaus”, Jallaludin Rumi.

Download eBook Membangun Aplikasi Client Server Menggunakan Java RMI


Membangun Aplikasi Client Server Menggunakan Java

Membangun Aplikasi Client Server Menggunakan Java

Kata Pengantar

Selamat datang di buku “Membangun Aplikasi Client Server dengan Java”. Dimana dalam buku ini saya akan membahas tentang cara membangun aplikasi Client Server dengan Java memanfaatkan fasilitas yang dimiliki oleh Java yaitu RMI.

Saat ini jarang sekali aplikasi yang dibangun standalone, kalaupun ada biasanya program tersebut bersifat general seperti OpenOffice, GIMP, Photoshop. Kebanyakan aplikasi saat ini yang dibuat untuk mengelola
Database, biasanya dibangun menggunakan konsep Client Server.

Misal saja aplikasi perpustakaan akan lebih baik jika dibangun menggunakan konsep Client Server, kenapa? Jika kita menggunakan konsep Client Server, maka seluruh aktifitas manipulasi data ke database akan terpusat di Server, sehingga Client tidak akan tau menahu tentang urusan Database, Client hanya merequest dan Server lah yang melakukan. Hal ini sangat baik karena Client tidak akan bekerja keras karena semuanya dikerjakan oleh Server, selain itu tingkat keamanan Sistem akan lebih terkontrol karena Client tidak akan langsung berhubungan dengan Database, melainkan harus lewat Server.

Download

Download eBook-nya

Masalah Saya Dengan Master-Detail di Bahasa Pemrograman Java


Posting baru artinya ada masalah baru :D , Kali ini berhubungan saya pemrograman Java, khususnya teknologi Swing (Salah satu teknologi Java GUI). Masalahnya sih sederhana aja. Yang biasa menggunakan bahasa Visual seperti Delphi, VB dan bahasa visual lainnya, mungkin akan bilang mudah untuk membuat Master Detail :D , sedangkan tidak dengan Java :D

So jadi intinya masalah yang saya hadapi adalah, gimana cara membuat sebuah master-detail di Java? Ada yang tau?

…..

*Berpikir Sejenak…

AHA!!!!!!!!!!! saya dapat ide :D , sepertinya kalo saya otak-atik di JTable akan sulit, jadi gimana kalo kita bermain dengan TableModel saya, sepertinya akan lebih mudah :D Anggap saja misal ada entitas Mahasiswa , dan setiap mahasiswa boleh mengambil MataKuliah lebih dari satu, tentunya :D Jadi disini, kita anggap Master-nya adalah Mahasiswa dan Detail-nya adalah MataKuliah. Kalo dibuat kelas entitasnya bisa seperti ini :

package khannedy.blogging.masterdetail.entity;

import java.io.Serializable;

public class MataKuliah implements Serializable {

 private String kode;
 private String nama;

 public String getKode() {
 return kode;
 }

 public void setKode(String kode) {
 this.kode = kode;
 }

 public String getNama() {
 return nama;
 }

 public void setNama(String nama) {
 this.nama = nama;
 }
}
package khannedy.blogging.masterdetail.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Mahasiswa implements Serializable {

 public static enum JenisKelamin {
 LakiLaki, Perempuan
 }

 private String nim;
 private String namaDepan;
 private String namaBelakang;
 private Date tanggalLahir;
 private JenisKelamin jenisKelamin;
 private List<matakuliah> mataKuliahs = new ArrayList<matakuliah>();

 public boolean add(MataKuliah e) {
 return mataKuliahs.add(e);
 }

 public List getMataKuliahs() {
 return mataKuliahs;
 }

 public JenisKelamin getJenisKelamin() {
 return jenisKelamin;
 }

 public void setJenisKelamin(JenisKelamin jenisKelamin) {
 this.jenisKelamin = jenisKelamin;
 }

 public String getNamaBelakang() {
 return namaBelakang;
 }

 public void setNamaBelakang(String namaBelakang) {
 this.namaBelakang = namaBelakang;
 }

 public String getNamaDepan() {
 return namaDepan;
 }

 public void setNamaDepan(String namaDepan) {
 this.namaDepan = namaDepan;
 }

 public String getNim() {
 return nim;
 }

 public void setNim(String nim) {
 this.nim = nim;
 }

 public Date getTanggalLahir() {
 return tanggalLahir;
 }

 public void setTanggalLahir(Date tanggalLahir) {
 this.tanggalLahir = tanggalLahir;
 }
}

Sederhana saja, jangan terlalu kompleks, yang penting mengerti cara membuat Master-Detail di Java Swing. Dari kelas diatas, kita bisa liat kalo Mahasiswa dapat mengambil MataKuliah lebih dari satu, oleh karena itu, saya menggunakan List, agar MataKuliah dapat ditambah. Sekarang saatnya kita membuat TableModel nya, karena kita menggunakan 2 kelas entitas, yaitu kelas Mahasiswa dan kelas MataKuliah, jadi kita membaut 2 TableModel, yaitu TableModelMahasiswa dan TableModelMataKuliah, fungsinya tentunya sesuai namanya.

package khannedy.blogging.masterdetail.model;

import java.util.List;
import javax.swing.table.AbstractTableModel;
import khannedy.blogging.masterdetail.entity.Mahasiswa;

public class TableModelMahasiswa extends AbstractTableModel {

 private List<mahasiswa> list;

 public TableModelMahasiswa(List list) {
 this.list = list;
 }

 public List getList() {
 return list;
 }

 public int getRowCount() {
 return list.size();
 }

 public int getColumnCount() {
 return 5;
 }

 @Override
 public String getColumnName(int column) {
 switch (column) {
 case 0:
 return "Nim";
 case 1:
 return "Nama Depan";
 case 2:
 return "Nama Belakang";
 case 3:
 return "Tanggal Lahir";
 case 4:
 return "Jenis Kelamin";
 default:
 return null;
 }
 }

 public Object getValueAt(int rowIndex, int columnIndex) {
 switch (columnIndex) {
 case 0:
 return list.get(rowIndex).getNim();
 case 1:
 return list.get(rowIndex).getNamaDepan();
 case 2:
 return list.get(rowIndex).getNamaBelakang();
 case 3:
 return list.get(rowIndex).getTanggalLahir();
 case 4:
 return list.get(rowIndex).getJenisKelamin();
 default:
 return null;
 }
 }
}

Untuk TableModelMahasiswa, kita menggunakan konstruktor yang harus langsung di inisialisasikan isi datanya public TableModelMahasiswa(List<Mahasiswa> list) , ini kita anggap karena memang Mahasiswa adalah Master, jadi datanya kita anggap tidak akan berubah-rubah, berbeda dengan data MataKuliah yang menjadi Detail-nya.

package khannedy.blogging.masterdetail.model;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import khannedy.blogging.masterdetail.entity.MataKuliah;

public class TableModelMataKuliah extends AbstractTableModel {

 private List<matakuliah> list = new ArrayList<matakuliah>();

 public void setList(List list) {
 this.list = list;
 fireTableDataChanged();
 }

 public int getRowCount() {
 return list.size();
 }

 public int getColumnCount() {
 return 2;
 }

 @Override
 public String getColumnName(int column) {
 switch (column) {
 case 0:
 return "Kode";
 case 1:
 return "Nama";
 default:
 return null;
 }
 }

 public Object getValueAt(int rowIndex, int columnIndex) {
 switch (columnIndex) {
 case 0:
 return list.get(rowIndex).getKode();
 case 1:
 return list.get(rowIndex).getNama();
 default:
 return null;
 }
 }
}

Untuk TableModelMataKuliah, cara mengubah datanya adalah menggunakan metode public void setList(List<MataKuliah> list) tidak menggunakan konstruktor, hal ini seperti yang dituliskan diatas, bahwa MataKuliah adalah Detail-nya, jadi akan sering sekali berubah, sehingga tidak disarankan datanya di set di konstruktor, karena jika di konstruktor, maka saat ada Detail baru yang akan ditampilkan, maka TableModelMataKuliah yang baru akan dibuat, dan semakin banyak TableModelMataKuliah yang dibuat, maka memori akan membengkak. Berbeda jika menggunakan kode diatas, memori tidak akan bertambah karena kita tidak perlu membuat TableModelMataKuliah jika akan menampilkan Detail-MataKuliah yang baru.

Sekarang tinggal tahap penerapan, anggap saja saya sudah membuat design tampilan aplikasinya, lalu saya membuat 2 JTable, pertama bernama tabelMahasiswa untuk menampilkan data Mahasiswa dan kedua tabelMataKuliah untuk menampilkan data MataKuliah. Sekarang tinggal set Model untuk tabelMahasiswa menjadi TableModelMahasiswa dan set Model untuk tabelMataKuliah menjadi TableModelMataKuliah :

modelMahasiswa = new TableModelMahasiswa(service.getAllMahasiswa(100));
modelMataKuliah = new TableModelMataKuliah();

tabelMahasiswa.setModel(modelMahasiswa);
tabelMataKuliah.setModel(modelMataKuliah);

Setelah itu kita beri aksi, saat pengguna menseleksi satu buat baris di tabelMahasiswa, maka tabelMataKuliah akan menampilkan data MataKuliah yang diambil oleh Mahasiswa yang terseleksi di tabelMahasiswa :

tabelMahasiswa.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

 public void valueChanged(ListSelectionEvent e) {
  int selected = tabelMahasiswa.getSelectedRow();
   if (selected != -1) {
     Mahasiswa mahasiswa = modelMahasiswa.getList().get(selected);
     List<matakuliah> list = mahasiswa.getMataKuliahs();
     modelMataKuliah.setList(list);
   }
 }
});

Selesai, sekarang tinggal jalankan aplikasinya. Dibawah ini adalah tampilan dari aplikasinya :

Master-Detail

Master-Detail Java Programming

Silahkan download sourcecode lengkapnya disini :

http://bit.ly/9N5Jgb

Factorial di Java


factorial? kalo ingin mengerti tentang apa itu factorial silahkan mengunjungi tempat ini [0]. untuk implementasinya di java sangat gampang, namun yang menjadi kendala adalah jangkauan tipe data numerik di java. jika kita menggunakan tipe data integer, maka cakupannya hanya mencapai kurang lebih 2 milyar, dan untuk long cakupannya kurang lebih 9 triliun. sedangkan untuk faktorial 22 saja, sudah lebih dari jangkauan tipe data long sehingga long hanya dapat mencapai faktorial 20. untuk mengakali hal ini kita bisa menggunakan tipe data BigInteger.

public BigInteger factorial(long i) {
   if (i == 0 || i == 1)
      return new BigInteger("1");
   else
      return new BigInteger(String.valueOf(i)).multiply(factorial(i - 1));
}

note :
[0] http://mathworld.wolfram.com/Factorial.html

Video Tutorial Membangun Aplikasi Client-Server Menggunakan Java


Screencast ini berisikan cara membuat aplikasi Client – Server menggunakan Java dengan teknologi RMI.

Sebelum anda menonton screencast ini, anda diharuskan mengerti RMI, jika anda belum mengerti RMI anda dapat mengunjungi link ini [0] atau [1]

Membangun Aplikasi Client – Server Menggunakan Java

  1. Intro
    1. Intro
    2. Pengenalan Client Server
  2. Hello World
    1. Project Hello Client – Server
    2. Membuat Project
    3. Membuat Project Hello API
    4. Membuat Project Hello Server
    5. Membuat Project Hello Client
    6. Menjalankan Project
  3. Hello World GUI
    1. Project Hello GUI Client – Server
    2. Membuat Project
    3. Membuat Project Hello GUI API
    4. Membuat Project Hello GUI Server
    5. Membuat Project Hello GUI Client
    6. Menjalankan Project
  4. Database Application
    1. Database Application Client Server
    2. Membuat Project
    3. Membuat Entitas
    4. Membuat Service
    5. Membuat Database
    6. Membuat Koneksi Ke Database
    7. Mengimplementasi Service
    8. Implementasi Metode Insert
    9. Implementasi Metode Update
    10. Implementasi Metode Delete
    11. Implementasi Metode getById
    12. implementasi Metode getAll
    13. Membuat Aplikasi Server
    14. Membuat Logger
    15. Membuat TableModel
    16. Membuat Form Client
    17. Aksi Table
    18. Menambah Aksi Tombol
    19. Membuat Aplikasi Client
    20. Test Aplikasi
    21. Menjalankan Aplikasi Server di Windows
    22. Menjalankan Aplikasi Client di Linux

Selamat Mencoba, jika anda ingin melihat full playlist nya di youtube, anda bisa melihatnya disini [3]

[0] http://java.sun.com/javase/6/docs/technotes/guides/rmi/index.html
[1] http://java.sun.com/docs/books/tutorial/rmi/index.html
[3] http://www.youtube.com/view_play_list?p=ED54FFB02C9AE88F