Tuesday, 24 February 2015

Tutorial membuat aplikasi sederhana CRUD dengan konsep MVC


MVC adalah arsitektur aplikasi yang memisahkan kode-kode aplikasi dalam tiga lapisan, Model,View dan Control. 
MVC termasuk dalam arsitektural design pattern yang menghendaki organisasi kode yang terstruktur dan tidak bercampur aduk. Ketika aplikasi sudah sangat besar dan menangani struktur data yang kompleks, harus ada pemisahan yang jelas antara domain model, komponen view dan kontroler yang mengatur penampilan model dalam view. Arsitektur MVC ini memungkinkan adanya perubahan dalam domain model tanpa harus mengubah code untuk menampilkan domain model tersebut. Hal ini sangat bermanfaat ketika aplikasi mempunyai domain model dan view komponen sangat besar dan kompleks.

Contoh Gambar : Alur kerja MVC

Di sini saya akan memberikan sebuah kasus yang sederhana dengan menggukan konsep MVC, di dalam sebuah aplikasi mahasiswa yang sederhana yang dapat melakukan CRUD (Create, Read, Update, Delete),

Baikkan teman-teman kita akan mulai belajar, sebelum membuatnya, siapkan dahulu mental kalian ya..hehe kayak udah mau perang aja, lalu gorengan sama susu bisa jga pake kopi, biar nambah aduhai dan yang terakhir ya laptop/pc ya yg paling penting, hehe

Saya menggunakan Tools Netbeans versi 7, dan MySQL sebagai Databasenya :

1. Langkah pertama yang di lakukan adalah membuat Databasenya dahulu, namanya tersereah teman-teman, yang penting jangan lupa.

2. Setelah membuat Databasenya, teman-teman buat tabelnya ya, namanya juga terserah teman- teman, nanti saya jelasin di letakkan di mana saja nama tabel teman- teman.


3. Buka Netbeans teman-teman ya, lalu Buat Project dengan nama "MVC_mahasiswa".

4. Teman- tema buat package fungsinya untuk memisahkan masing-masing fungsi, caranya klik kanan pada tulisan source Packages, lihat gambar 

5. buat 4 buah package  dengan masing- masing nama :
  - com.controller  *package ini nanti berfugsi sebagai penghubung dari model dan view
  - com.model       *package ini berfungsi sebagai memasukkan perintah,, cak-caknya bos lah
  - com.view         *package ini berfungsi sebagai tampilan program
  - com.koneksi     *package ini berfungsi sebagai jembatan hubungan database dan program
      hasilnya seperti ini..


6. langkah selanjudnya kita buat form nya kalo tidak form ya tampilan lah, buat dengan nama "Form_Mahasiswa" tanpa tanda petik dua ya, buatnya harus di dalam package com.view, cara nya klik kana package nya,, nih saya kasih gambarnya biar kalian tidak tersesat..hehe

7. kalo sudah.. bikin tampilannya seperti saya ya, lalu ganti nama-namanya sesuai yang di gambar

 
    sedikit penjelasan, untuk "cbjurusan" teman-teman masukkan item apa saja, yang di inginkan.


 *Sedikit kesalahan dari saya di tutorial ini, ternyata saya tidak melakukan perubahan variable modifers yang defaultnya private, harus di rubah ke public, agar dapat di baca oleh class lain.
Langsung saja,cara nya sebagai berikut :

 kita kli knan pada txtNim pilih properties-lalu pilih code - cari tulisan variable modifers - rubah privatenya menjadi public, lihat gambar

       
     lakukan pada txtNama, rbLaki, rbPerempuan dan cbJurusan.

8. Sekarang kita masukkin dulu library yang di butuhkan, untuk saat ini kita hanya membutuhkan MYSQL JDBC Driver aja, cara nya kita klik kanan pada Libraries liat aja foldernya di project kita, kita pilih add Library.. lalu cari MYSQL JDBC Driver - klik add Library, nih contoh gambarnya

9. lanjud ya, sekarang kita menuju com.koneksi pilih Java Class buat dengan nama "koneksi", fungsinya sebagai penghubung ke database, bisa di liat Source Code nya:
10. Jika sudah sekarang kita ke package com.controller klik kanan pilih Java Interface, caranya         seperti langkah ke 6, lalu buat dengan nama "controller_mahasiswa" .
 Source Code :


      Sedikit penjelasan public void Simpan(Form_Mahasiswa mhs) : Ini berfungsi sebagai pengubung       untuk melakukan simpan data, yang lainnya bisa di artiin sendiri ya.


11. Masih belum pusing kan, hehe dikit lagi kok, Selanjudnya kita membuat model yang fungsinya sebagia tempat memasukkan perintah-perintah, cuma di sini ada yang unik, kita harus meng Override seluruh class yang mau dibuat, cuma sudah di buat otomatis kok. tinggal ikutin aja langkah-langkahnya, kita masuk ke com.model klik kanan kita pilih Java Class, buat dengan nama "Model_Mahasiswa.
kalo sudah liat gambarnya nya

      jika anda benar akan muncul seperti ini..


      untuk tulisan "throw new UnsupportedOperationException ("Not supported yet."); //To change body of generated methods, choose Tools | Templates" hapus saja
12. Masukkan perintah di dalam "public void Simpan(Form_Mahasiswa mhs)" untuk menyimpan data


13. Masukkan perintah di dalam "public void Ubah(Form_Mahasiswa mhs)" untuk mengubah data


14. Masukkan perintah di dalam "public void Hapus(Form_Mahasiswa mhs)" untuk menghapus data


15. Masukkan perintah di dalam "public void Baru(Form_Mahasiswa mhs)" untuk membuat keadaan tempat input form menjadi bersih / kosong.

16. Masukkan perintah di dalam "public void Tampil(Form_Mahasiswa mhs)" untuk menampilkan isi records di tabel database kita


17. Masukkan perintah di dalam "public void KlikTabel(Form_Mahasiswa mhs)" untuk memindahkan isi dari tabel ke input kita.


18. Sekarang kita masuk ke Form_Mahasiswa pilih Source, maskkan sintak ini kedalam sourcode nya ya... *tolong di baca baik-baik setiap komentar dari saya di source code nya

19. Kita kembali ke desain ya, klik 2x tombol Baru atau bisa juga klik kanan- Event - Klik Action.,
     nanti kita akan masuk ke Soure code, cuma udah di dalam btnBaru, buat sintaknya

20. Selanjudnya klik tombol Simpan, masukkan kode seperti ini..

21. Klik tombol Ubah, masukkan kode seperti ini.

22. Klik tombol Hapus, masukkan kode seperti ini.

23. Klik tombol Keluar, masukkan kode seperti ini.

24. Yang terakhir, masuk ke Source, tarik cursor paling bawah, cari tulisan "public void main(String args[])" kita tambahkan isinya seperti ini :

Selesai, kita bisa jalankan dengan menekan Shift+F6 / run,
Bentuk Tampilannya

Selamat Mencoba*
Jika anda mual-mual karna melihat coding saya, mungkin anda harus banyak-banyak berlatih, dan saya pun hanya seorang Newbea di dalam dunia pemograman.

Jika saya ada kesalahan, dalam penulisan dan jika ada masukan bisa coret-coret di komentar
Salam.. :-)




*Sumber penjelasan Konsep MCV di ambil dari e-book ifnu Bima,

37 comments:

  1. Mksh gan artikel ny sangat membantu..

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. keren gan.. :D,
    mau tanya nih, klo mo pasang koding kek gitu di blogspot gmn caranya ya... hehheee... maaf OOT...

    terima kasih

    ReplyDelete
  4. Mas Taufik : di sini caranya gist.github.com

    ReplyDelete
  5. kalo nambahin action cari gmn mas?

    misal

    cari nip or nama di JTextfield trus pas di klik button cari nanti nama or nip yg ada di table muncul sesuai yang di cari?

    ReplyDelete
    Replies
    1. pelajari tentang query mas... yang menggunakan like

      Delete
    2. ResultSet st;
      Statement st;

      String Query="select * from Namatable where nip='"+txtnip.gettext()+"'";

      rs=st.excuteQuery(Query);
      while(rs.next())
      {
      isi tablenya atau
      System.out.Println(rs.getstring("nip"));..dan seterusnya
      }

      Delete
  6. mau tanya ketemu error
    "tabel.setModel(tblmodel)"
    "tabel" tidak teridentifikasi, itu dibuat class / variable ya?
    semua yang ada "tabel" error

    thanks

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. setahu saya kalo gak salah nama tablenya di ganti default tableny jTable1 di ganti tabel dan midifienya public

      maaf semoga membantu

      Delete
    3. silakan tekan control + S saat semua sintak dimasukan

      atau

      anda belum membuat defaut tabel model tblmodel = new defauttabel model

      Delete
  7. gan mhs itu apanya ya.....
    (newbie)

    ReplyDelete
    Replies
    1. 'mhs' itu hanya sekedar singkatan aja = 'mahasiswa'

      Delete
  8. mintalink git hubnya gan, mau liat

    ReplyDelete
  9. ini tutor yang saya cari2,trima kasih banyak sangat membantu

    ReplyDelete
  10. This comment has been removed by the author.

    ReplyDelete
  11. tblmodel = new DefaultTableModel(null, header);
    tabel.setModel(tblmodel);
    tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    model.Tampil(this);
    setLebarKolom();

    Syapa aja yg tau maksud dari kodingan ini tolong beri aq pencerahan.

    ReplyDelete
    Replies
    1. "tblmodel = new defaulttable"
      model merupakan inisilisasi dari defauttabelmodel
      "tabel.setModel(tblmodel)"
      tabel yang ada di view di set modelnya yang di ambil defautl set model
      "tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);"
      yaitu mematikan fungsi auto resize pada tabel
      "model.Tampil(this);"
      memanggil fungsi tampil pada model, jadi saat kita run aplikasinya data pada tabel langsung terisi dikarenakan fungsi Tampil
      "setLebarKolom();"
      memanggil methode mengatur lebar kolom

      Delete
  12. This comment has been removed by a blog administrator.

    ReplyDelete
    Replies
    1. This comment has been removed by a blog administrator.

      Delete
  13. Hey, mister, bagaimana dengan metode crud yang berkonsepkan MVC namun bekerja dengan data gambar, seperti ada hal yg disebut setbinarryStream atau setBlob.

    ReplyDelete
  14. mas bro untuk event manggil klik tablenya itu dimana ya? ane blum jalan klik tablenyanih

    ReplyDelete
    Replies
    1. kalau ane simpen di event mouseClicked masalah ga mas bro?

      Delete
  15. gan set.lebarkolom kok errorr lebarkolom dideklarasikan dimana?

    ReplyDelete
  16. min kok gua salahnya di tblmodel ya, tiap kodingan tblmodel ada merahnya min

    ReplyDelete
  17. Terima kasihh, postingannya sangat bermanfaat 😊🙏

    ReplyDelete
  18. gan saya sudah ikuti dari awal sampai akhir di com.model ada tg error

    ReplyDelete
  19. This comment has been removed by the author.

    ReplyDelete
  20. This comment has been removed by the author.

    ReplyDelete
  21. kak kenapa yaa kalo yang perintah di dalam "public void KlikTabel(Form_Mahasiswa mhs)" untuk memindahkan isi dari tabel ke input saya tdk bisa berfungsi ??

    ReplyDelete
  22. bang di bagian klikTable nya ada yang error int pilih = mhs.""""tabel"""".getSelectedRow(); gimana ya cara ngatasinya

    ReplyDelete
  23. Cara biar jcombobox belum diisi terus ada JOptionPane.showmessagedialog, itu formatnya gimana ya bang?

    ReplyDelete
  24. mas di table nya harus dibuat action mouseclicked dlu dan disambungkan ke model.kliktabel biar berfungsi

    ReplyDelete