Tadi pagi ada yang SMS, gimana cara menyimpan data berkas ke database dengan tipe kolom BLOB. Hal ini mungkin berguna, saat misal kita akan menyimpan gambar photo karyawan di database, jadi photonya tidak disimpan di hardisk, tapi langsung di database, atau juga menyimpan data dokumen word atau excel langsung ke database. Caranya cukup mudah 😀 Baca lebih lanjut
JRE
Tampilan Date yang Aneh di JTable
Peralatan yang diperlukan :
- Java Development Kit 1.6
- Integrated Development Environtment (NetBeans, Eclipse, dll)
Tadi pagi ada yang bertanya kenapa format tampilan Date (tanggal) di JTable aneh, tampilannya “Wed Jun 02 14:26:53 ICT 2010”. Yup memang seperti itulah default tampilan dari Date (java.util.Date), kok seperti itu? Ini dikarenakan Date bukanlah String, sehingga tidak dapat langsung ditampilkan oleh JTable, lantas kenapa bisa tampil tulisan “Wed Jun 02 14:26:53 ICT 2010” ? Hal ini dikarenakan itu dipanggil dari metode toString() milik kelas Object. Baca lebih lanjut
DynamicReport, Pembuat Laporan JasperReport Dimanis
Tau ribetnya bikin report menggunakan JasperReport kan? Pertama harus buat file JRXML, atau kalo mau mudah bisa pake iReport, lalu setelah itu kompile hasilnya, hasil kompile baru bisa diload ke aplikasi form kita 😀
hmmm………………… males deh.
Saat ini sudah ada DynamicReport, framework buat bikin report yang bisa secara dinamis membuat laporan, tanpa membuat XML dan sebagainya, ini contoh kodenya :
import static net.sf.dynamicreports.report.builder.DynamicReports.*; public class Report { private void build() { try { report()//create new report design .columns(...) //adds columns .groupBy(...) //adds groups .subtotalsAtSummary(...) //adds subtotals ... //set datasource .setDataSource(...) //export report .toPdf(...) //export report to pdf .toXls(...) //export report to excel ... //other outputs .toJasperPrint() //creates jasperprint object .show() //shows report .print() //prints report ... } catch (DRException e) { e.printStackTrace(); } } ... }
mudah kan?
secara dinamis kita bisa tentukan kolomnya, isi laporannya, dan lain-lain…. 😀
haha, silahkan eksplorasi disini : http://dynamicreports.sourceforge.net/
enjoy!!!!
Perbedaan Glassfish 3 dan Glassfish WebProfile 3
Feature | Included in GlassFish 3.0 | Included in GlassFish 3.0 Web Profile |
Java Platform, Enterprise Edition 6 | X | X |
EJB 3.1 Lite (Support for Local Container only) | X | X |
JTS/JTA 1.1 ** | X | X |
OSGi-based microkernel | X | X |
Java Web Technologies (Servlet 3.0, JSP 2.2, JSF 2.0, JSTLÂ 1.2, EL 2.2) | X | X |
Grizzly/Comet | X | X |
JPA 2.0, (EclipseLink), JDBC Connection Pooling | X | X |
JDBC 4.0 | X | X |
JavaDB 10.5.3 | X | X |
Web Administration Console and CLI | X | X |
Rapid Redeployment (Maintain session state on application redeploy) |
X | X |
OMG CORBA APIs 3.0 | X | X |
Debugging Support for Other Languages 1.0 | X | X |
Common Annotations for Java 1.1 | X | X |
Dependency Injection for Java 1.0 | X | X |
Managed Beans 1.0 | X | X |
Interceptors 1.1 | X | X |
Contexts and Dependency Injection for Java 1.0 (CDI, ex-Web Beans) | X | X |
Bean Validation 1.0 | X | X |
JAX-RS 1.1 (Jersey) | X | X |
EJB 3.1 Full API (Support for Remote Container) | X | |
Java EE Connector Architecture 1.6 | X | |
JAX-WS 2.2 | X | |
JAXB 2.2 | X | |
Implementing Java Web Services 1.3 | X | |
Web Services Metadata for the Java Platform 2.1 | X | |
JMS 1.1 | X | |
JavaMail 1.4 | X | |
JACC 1.4 | X | |
Java Authentication Service Provider Interface for Containers 1.1 | X | |
Java EE Application Deployment 1.2 | X | |
J2EE Management 1.1 | X | |
JAX-RPC 1.1 | X | |
JAXR 1.0 | X | |
CORBA 3.0.0 | X | * |
Metro | X |
- * The Full Java EE Platform contains the complete CORBA package. The OMG CORBA v3.0 APIs are available in the Java EE Web Profile.
- ** Transaction propagation not supported
Membuat Aplikasi CRUD Dengan JPA 2 dan NetBeans IDE 6.8
Sudah dari dulu NetBeans mendukung fitur JPA, dan sejak versi 6.8 sekarang ini, NetBeans telah mendukung penuh JPA 2 dan JEE6. Dan sekarang kita akan belajar membuat aplikasi CRUD menggunakan JPA 2 dibantu oleh NetBeans IDE
Membuat Database
JPA tidak tergantung dengan database, apapun databasenya, anda tetap bisa mempraktekan tutorial ini. Disini saya menggunakan database MySQL. Jadi sebelum membuat aplikasi, kita buat dulu databasenya. Untuk membuat database di MySQL caranya cukup sederhana, tinggal gunakan perintah :
create database crud;
Artinya sekarang saya sudah membuat database dengan nama crud.
Membuat Project
Karena kita akan membuat aplikasi Desktop, jadi kita buat sebuah project Java Application di NetBeans, caranya lewat menu : File -> New Project, lalu pada bagian Categories pilih Java dan bagian Project pilih Java Application. Setelah itu beri nama projectnya, dan jangan lupa untuk otomatis membuat Main Class seperti yang terlihat pada gambar dibawah ini :
Membuat Persistence Unit
Sebelum membuat aplikasi, pertama kita harus membuat Persistence Unit. Caranya pilih File -> New File, lalu pada bagian Categories pilih Persistence dan pada bagian File Types pilih Persistence Unit. Berinama persistence unitnya, dan pilih Persistence Librarynya menjadi Eclipse Link (JPA2), JANGAN PILIH HIBERNATE, karena library hibernate yang ada di NetBeans 6.8 hanya mendukung JPA1 :
Pada bagian Database Connection, klik comboboxnya lalu pilih Create New Database Connection untuk membuat koneksi baru. Koneksi yang akan dibuat adalah koneksi ke database yang sebelumnya kita buat :
Setelah selesai, maka sekarang pada project akan ada file persistence.xml pada package META-INF. Artinya kita berhasil membuat Persistence Unit.
Membuat Entity
Berbeda jika menggunakan JDBC, sebuah tabel pada JPA bernama Entitas, jadi Entitas adalah sebuah Tabel. Dan itu merupakan class Java Beans, yaitu class yang hanya berisikan Getter dan Setter saja.
Untuk membuat sebuah class Entity caranya lewat menu File -> New File. Lalu pada bagian Categories pilih Persistence dan pada bagian File Types pilih Entity Class. Kali ini saya membuat sebuah entitas Mahasiswa dan untuk primary key-nya saya gunakan String :
Setelah itu buat propertynya beserta getter dan setternya, sehingga class Entity nya seperti terlihat pada code dibawah ini :
package khannedy.crudjpa; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Mahasiswa implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id_mahasiswa") private String id; @Column(name = "nama_mahasiswa", length = 45) private String nama; @Column(name = "alamat_mahasiswa", length = 500) private String alamat; public String getAlamat() { return alamat; } public void setAlamat(String alamat) { this.alamat = alamat; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Mahasiswa)) { return false; } Mahasiswa other = (Mahasiswa) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "khannedy.crudjpa.Mahasiswa[id=" + id + "]"; } }
Sebuah class entity harus ditandai dengan annotation @Entity, dan untuk primary key-nya ditandai dengan @Id. Sedangkan untuk @Column itu tandanya bahwa property itu adalah sebuah column di tabel database. namun defaultnya walaupun tidak ditandai dengan @Column, setiap property pasti dijadikan column di tabel database.
Membuat Persistence Utilities
Setelah membuat class Entity, sekarang saatnya kita buat class PersistenceUtilities, class ini digunakan untuk membuat EntityManagerFactory, hal ini agar kita dapat memanggil EntityManagerFactory di class manapun dan kapanpun kita mau. Untuk membuat class caranya pilih File -> New File. lalu pada bagian Categories pilih Java dan pada bagian File Types pilih Java Class. Berinama class itu dengan nama PersistenceUtilities atau terserah anda, setelah itu buat kode seperti yang terlihat dibawah ini :
package khannedy.crudjpa;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class PersistenceUtilities {
private final static EntityManagerFactory entityManagerFactory;
static {
// membuat EntityManagerFactory
// parameter harus sama dengan nama Persistence Unit
// yang ada pada file persistence.xml
entityManagerFactory = Persistence.createEntityManagerFactory("crud-jpaPU");
}
public static EntityManagerFactory getEntityManagerFactory() {
return entityManagerFactory;
}
}
Untuk membuat EntityManagerFactory, kita bisa menggunakan class Persistence dan metode createEntityManagerFactory, tapi perlu diingat bahwa parameter yang digunakan adalah nama Persistence Unit yang sebelumnya telah dibuat pada file persistence.xml.
Membuat Tampilan Antarmuka
Sekarang saatnya membaut tampilan antarmuka menggunakan Java Swing. Untuk membuat Form di NetBeans sangat mudah karena NetBeans mendukung pembuatan Antarmuka secara Visual. Pilih File -> New File, lalu pada bagian Categories pilih Swing GUI Form dan pada bagian File Types pilih JFrame Form. Sekarang kita bisa membuat tampilan antarmuka aplikasi secara visual :
Mudah sekali untuk membuat tampilan antarmuka, kita hanya cukup melakukan DRAG dan DROP komponen yang ada di pallete ke form yang ada pada Editor. Saya anggap anda sudah mengerti bagaimana cara membaut tampilan antarmuka mengugnakan NetBeans. Jadi sekarang silahkan anda buat tampilan antarmuka seperti pada gambar dibawah ini :
Agar saat pengkodean tidak membingungkan, jadi sekarang kita samakan persepsi dulu 😀 . Silahkan ubah nama-nama komponen seperti pada gambar dibawah ini :
Sepertinya tidak perlu dijelaskan, karena gambar sudah bisa merepresentasikan komponen yang mana yang bernama seperti itu 😀
Membuat Table Model Mahasiswa
Karena kita menggunakan sebuah Tabel pada tampilan antarmukanya, jadi mau tidak kamu kita buat sebuah TableModel agar lebih memudahkan saat menambah data ke Tabel dan mengambil data dari Tabel. Untuk membuat TableModelMahasiswa, caranya seperti membuat kelas biasa, tidak ada yang berbeda.
package khannedy.crudjpa; import java.util.List; import javax.swing.table.AbstractTableModel; public class TableModelMahasiswa extends AbstractTableModel { private List list; // mengubah seluruh data public void setData(List list) { this.list = list; // memberi peringatan ke tabel bahwa data berubah fireTableDataChanged(); } // menambah data mahasiswa public void add(Mahasiswa mahasiswa) { list.add(mahasiswa); // memberi peringatan ke tabel bahwa data bertambah fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1); } // mengubah data mahasiswa public void edit(int index, Mahasiswa mahasiswa) { list.set(index, mahasiswa); // memberi peringatan ke tabel bahwa data berubah pada index ke-? fireTableRowsUpdated(index, index); } // menghapus data mahasiswa public void delete(int index) { list.remove(index); // memberi peringatan ke tabel bahwa data dihapus pada index ke-? fireTableRowsDeleted(index, index); } // mendapatkan mahasiswa pada baris ke-? public Mahasiswa get(int row) { return list.get(row); } // mendapatkan total baris public int getRowCount() { return list.size(); } // mendapatkan total kolom public int getColumnCount() { return 3; } // mendapatkan nilai pada baris ke-? dan kolom ke-? public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return list.get(rowIndex).getId(); case 1: return list.get(rowIndex).getNama(); case 2: return list.get(rowIndex).getAlamat(); default: return null; } } @Override // mendapatkan nama kolom pada index ke-? public String getColumnName(int column) { switch (column) { case 0: return "Nim"; case 1: return "Nama"; case 2: return "Alamat"; default: return null; } } }
Menambahkan Tabel Model ke Antarmuka
Setelah membuat TableModelMahasiswa jangan lupa untuk mengubah TableModel tabel Mahasiswa menjadi TableModelMahasiswa, caranya. Buka file Form yang tadi dibuat, setelah itu masuk ke bagian Source, lalu ubah konstruktornya yang sebelumnya seperti ini :
public class Form extends javax.swing.JFrame { /** Creates new form Form */ public Form() { initComponents(); }
menjadi seperti ini :
public class Form extends javax.swing.JFrame {
private TableModelMahasiswa tableModelMahasiswa;
/** Creates new form Form */
public Form() {
initComponents();
tableModelMahasiswa = new TableModelMahasiswa();
tabelMahasiswa.setModel(tableModelMahasiswa);
}
Menambah Aksi Tombol
Sekarang saatnya menambahkan aksi-aksi untuk tombol TAMBAH, UBAH, SEGARKAN dan HAPUS. Untuk menambahkan aksi ke tombol caranya, klik kanan tombolnya lalu pilih Events -> Action -> actionPerformed. Setelah itu maka kita akan masuk ke kode. Untuk tombol tambah, berikan perintah seperti dibawah ini :
private void tombolTambahActionPerformed(java.awt.event.ActionEvent evt) {
// membuat entitymanager
EntityManager manager = PersistenceUtilities.getEntityManagerFactory().createEntityManager();
try {
// memulai transaksi
manager.getTransaction().begin();
// buat mahasiswa
Mahasiswa mahasiswa = new Mahasiswa();
mahasiswa.setId(textNIM.getText());
mahasiswa.setNama(textNama.getText());
mahasiswa.setAlamat(textAlamat.getText());
// bersihkan form
textNIM.setText("");
textNama.setText("");
textAlamat.setText("");
// simpah mahasiswa ke database
manager.persist(mahasiswa);
// tambahkan ke tabel
tableModelMahasiswa.add(mahasiswa);
// commit transaksi
manager.getTransaction().commit();
} catch (Throwable t) {
// perlihatkan error
t.printStackTrace();
// rollback transaksi
manager.getTransaction().rollback();
} finally {
// tutup entitymanager
manager.close();
}
}
Untuk tombol Ubah gunakan perintah seperti ini :
private void tombolUbahActionPerformed(java.awt.event.ActionEvent evt) {
// dapatkan baris tabel yang terseleksi
int baris = tabelMahasiswa.getSelectedRow();
// cek apakah baris tabel terseleksi
if (baris < 0) {
// jika tidak maka batalkan aksi ubah
return;
}
// membuat entitymanager
EntityManager manager = PersistenceUtilities.getEntityManagerFactory().createEntityManager();
try {
// memulai transaksi
manager.getTransaction().begin();
// dapatkan mahasiswa dari tabel
Mahasiswa mahasiswa = tableModelMahasiswa.get(baris);
// ubah data mahasiswa
mahasiswa.setId(textNIM.getText());
mahasiswa.setNama(textNama.getText());
mahasiswa.setAlamat(textAlamat.getText());
// simpah perubahan mahasiswa ke database
manager.merge(mahasiswa);
// ubah mahasiswa di tabel
tableModelMahasiswa.edit(baris, mahasiswa);
// commit transaksi
manager.getTransaction().commit();
} catch (Throwable t) {
// perlihatkan error
t.printStackTrace();
// rollback transaksi
manager.getTransaction().rollback();
} finally {
// tutup entitymanager
manager.close();
}
}
Untuk tombol Hapus gunakan perintah seperti ini :
private void tombolHapusActionPerformed(java.awt.event.ActionEvent evt) {
// dapatkan baris tabel yang terseleksi
int baris = tabelMahasiswa.getSelectedRow();
// cek apakah baris tabel terseleksi
if (baris < 0) {
// jika tidak maka batalkan aksi hapus
return;
}
// konfirmasi penghapusan
if (JOptionPane.showConfirmDialog(this, "Anda Yakin Akan Menghapus Data Mahasiswa?", "Hapus Mahasiswa", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION) {
// batalkan aksi hapus
return;
}
// membuat entitymanager
EntityManager manager = PersistenceUtilities.getEntityManagerFactory().createEntityManager();
try {
// memulai transaksi
manager.getTransaction().begin();
// dapatkan mahasiswa dari tabel
Mahasiswa mahasiswa = tableModelMahasiswa.get(baris);
// hapus data mahasiswa di database
manager.remove(manager.merge(mahasiswa));
// hapus data mahasiswa di tabel
tableModelMahasiswa.delete(baris);
// commit transaksi
manager.getTransaction().commit();
} catch (Throwable t) {
// perlihatkan error
t.printStackTrace();
// rollback transaksi
manager.getTransaction().rollback();
} finally {
// tutup entitymanager
manager.close();
}
}
Untuk tombol Segarkan gunakan perintah seperti ini :
private void tombolSegarkanActionPerformed(java.awt.event.ActionEvent evt) {
// membuat entitymanager
EntityManager manager = PersistenceUtilities.getEntityManagerFactory().createEntityManager();
try {
// muat seluruh data mahasiswa
List list = manager.createQuery("select a from Mahasiswa a order by a.id").getResultList();
// ubah seluruh data mahasiswa di tabel
tableModelMahasiswa.setData(list);
} catch (Throwable t) {
// perlihatkan error
t.printStackTrace();
} finally {
// tutup entitymanager
manager.close();
}
}
Selesai menambah Aksi 😀
Menambah Aksi Seleksi Pada Tabel
Agar lebih interaktif, saat user menseleksi satu buah baris ke Tabel, maka otomatis form akan menampilkan data yang ada ditabel. Tapi untuk menambahkannya jangan menggunakan aksi OnMouseClick, kenapa? Karena kadang mengubah baris tidak menggunakan mouse, bisa saja menggunakan tombol arrow di keyboard. Sehingga sekarang kita ubah lagi konstruktur Form menjadi :
public class Form extends javax.swing.JFrame {
private TableModelMahasiswa tableModelMahasiswa;
/** Creates new form Form */
public Form() {
initComponents();
tableModelMahasiswa = new TableModelMahasiswa();
tabelMahasiswa.setModel(tableModelMahasiswa);
// tambahkan aksi seleksi baris
tabelMahasiswa.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
// dapatkan baris yang terseleksi
int baris = tabelMahasiswa.getSelectedRow();
// cek apakah baris terseleksi
if (baris != -1) {
// jika terseleksi, tampilkan data di form
// dapatkan mahasiswa dari tabel
Mahasiswa mahasiswa = tableModelMahasiswa.get(baris);
// tampilkan data di form
textNIM.setText(mahasiswa.getId());
textNama.setText(mahasiswa.getNama());
textAlamat.setText(mahasiswa.getAlamat());
}
}
});
}
Memuat Data Mahasiswa
Saat pertama kali form muncul, sehingga kita ubah lagi isi konstruktornya menjadi seperti dibawah ini :
public class Form extends javax.swing.JFrame {
private TableModelMahasiswa tableModelMahasiswa;
/** Creates new form Form */
public Form() {
initComponents();
tableModelMahasiswa = new TableModelMahasiswa();
tabelMahasiswa.setModel(tableModelMahasiswa);
// tambahkan aksi seleksi baris
tabelMahasiswa.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
// dapatkan baris yang terseleksi
int baris = tabelMahasiswa.getSelectedRow();
// cek apakah baris terseleksi
if (baris != -1) {
// jika terseleksi, tampilkan data di form
// dapatkan mahasiswa dari tabel
Mahasiswa mahasiswa = tableModelMahasiswa.get(baris);
// tampilkan data di form
textNIM.setText(mahasiswa.getId());
textNama.setText(mahasiswa.getNama());
textAlamat.setText(mahasiswa.getAlamat());
}
}
});
// panggil aksi tombol segarkan
tombolSegarkanActionPerformed(null);
}
Lho kok cuma segitu? yup, tidak perlu kita buat ulang kodenya, tinggal kita panggil saja aksi tombol SEGARKAN, karena memang perintahnya sama, jadi gak perlu diketik ulang.
Tahap Akhir
Sekarang, Aplikasi Telah selesai, tinggal dijalankan lewat class Main, jadi sekarang kita ubah isi class Main agar menjalankan Form yang tadi kita buat :
package khannedy.crudjpa;
import javax.swing.SwingUtilities;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Form form = new Form();
form.setVisible(true);
}
});
}
}
Selesai, sekarang tinggal jalankan projectnya, caranya klik kanan projectnya lalu pilih Run, dan aplikasi akan berjalan 😀
Tapi Ups kok error :
run: [EL Info]: 2010-03-25 23:10:04.617--ServerSession(21450309)--EclipseLink, version: Eclipse Persistence Services - 2.0.1.v20100213-r6600 [EL Severe]: 2010-03-25 23:10:04.635--ServerSession(21450309)--Local Exception Stack: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException Exception Description: Configuration error. Class [com.mysql.jdbc.Driver] not found. Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82) at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267) Exception Description: Configuration error. Class [com.mysql.jdbc.Driver] not found. at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:397) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195) at khannedy.crudjpa.Form.tombolSegarkanActionPerformed(Form.java:314) at khannedy.crudjpa.Form.(Form.java:54) at khannedy.crudjpa.Main$1.run(Main.java:12) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228) Caused by: Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151) Exception Description: Configuration error. Class [com.mysql.jdbc.Driver] not found. at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207) at org.eclipse.persistence.exceptions.DatabaseException.configurationErrorClassNotFound(DatabaseException.java:82) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195) at org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:267) at khannedy.crudjpa.Form.tombolSegarkanActionPerformed(Form.java:314) at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85) at khannedy.crudjpa.Form.(Form.java:54) at khannedy.crudjpa.Main$1.run(Main.java:12) at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369) ... 14 more at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at khannedy.crudjpa.TableModelMahasiswa.getRowCount(TableModelMahasiswa.java:45) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) at javax.swing.JTable.getRowCount(JTable.java:2630) at javax.swing.plaf.basic.BasicTableUI.createTableSize(BasicTableUI.java:1646) at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(BasicTableUI.java:1687) at javax.swing.JComponent.getPreferredSize(JComponent.java:1634) at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769) at java.awt.Container.layout(Container.java:1421) at java.awt.Container.doLayout(Container.java:1410) at java.awt.Container.validateTree(Container.java:1507) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validate(Container.java:1480) at java.awt.Window.dispatchEventImpl(Window.java:2476) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) BUILD STOPPED (total time: 12 seconds)
Haha, gak usah khawatir, itu karena Library MySQL Driver nya belum di includkan ke Project. Tinggal klik kanan bagian Libraries pada Project, lalu pilih Add Library, setelah itu pilih MySQL JDBC Driver :
Sekarang coba jalankan ulang. Dan pasti BERHASIL 😀
Tampilan Aplikasi
Download Source Code
Silahkan download sourcecodenya DISINI
menginstall jre
jre ato java runtime edition merupakan sebuah perangkat lunak yang digunakan untuk menjalankan file-file hasil kompilasi dari bahasa java.
jre hampir mirip dengan flash player ato quick time player ato juga sockwave player.
jadi program java tak akan bisa jalan jika dalam komputer kita tak terinstall jre, sama seperti file .swf tak akan jalan jika dikomputer kita tak terinstall flash player.
nach kali ini kita akan coba nginstall jre dari A sampe Z 😀
Mengenal Java (Tutorial Awal Java)
Sejarah Singkat Java
Pada tahun 1991, sekelompok insinyur SUN yang dipimpin Patrick Naughton dan James Gosling ingin merancang bahasa komputer untuk perangkat consumer seperti cable Tv box. Karena perangkat itu tidak mempunyai banyak memori, bahasa harus berukuran kecil dan menghasilkan kode yang liat, maka bahasa harus bebas dari arsitektur manapun. Proyek ini diberi nama kode Green. Baca lebih lanjut
Membuat Aplikati NotePad Menggunakan Java
Ini adalah source code contoh aplikasi text editor seperti notepad. Jika ada yang tidak mengerti atau ada yang ingin ditanyakan, silahkan ajukan pertanyaannya di bagian KOMENTAR Baca lebih lanjut