Aplikasi client-server database bagian-2

Artikel ini adalah melanjutkan artikel sebelumnya yaitu “Latihan membuat aplikasi client-server database untuk awal project sistem terdistribusi dan pemrosesan parallel menggunakan java”(bisa dilihat disini) yang sempat terhenti karena waktu saya postingnya siang pas wktu kuliah.. sekrang dilanjut setelah sebelumnya kita membuat api untuk client server, sekrang kita biat servernya dulu sebagai tempat proses logicnya..

buat project baru dan dibawah ini ada screenshotnya untuk project server:
serverproject

langkah pertama setelah membuat project adalah memasukkan api kedalam library-nya server untuk digunakan.. caranya klik kanan pada library terus add project pilih api-cobasister lalu di add project JAR Files. setelah itu juga masukkan driver jdbc didalam library untuk koneksinya.. caranya klik kanan pada library add library lalu pilih Mysql JDBC Driver lalu add library.
setelah itu buat class2 seperti dibawah ini.. keterangan kelas tersebut dipaket mana ada di sourcecode paling atas, jadi mohon disesuaikan.. 🙂

pertama buat DatabaseUtilities.java (ini adalah class yg mengurusi koneksi antara aplikasi, dao dan database)

package stta.bahrie.sisterserver.utilities;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author bahrie
 */
public class DatabaseUtilities {

    private static Connection connection;

    public static Connection getConnection() {
        if (connection == null) {
            try {
                DriverManager.registerDriver(new com.mysql.jdbc.Driver());
                connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/uji_sister", "root", "bahrie");
            } catch (SQLException ex) {
                Logger.getLogger(DatabaseUtilities.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return connection;
    }
}


setelah itu buat PesonServiceServer.java (kelas ini adalah implement dari interface yang ada di project api yaitu interface PersonService.java) didalamnya adalah berisi bisnis logic untuk perantara dri aplikasi ke database maupun sebaliknya yang disebut dengan istilah DAO(data access Object)..

package stta.bahrie.sisterserver.sevice;

import api.bahrie.entity.Person;
import api.bahrie.service.PersonSevice;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.sql.Date;
import java.util.List;
import stta.bahrie.sisterserver.utilities.DatabaseUtilities;

/**
 *
 * @author bahrie
 */
public class PersonServiceServer extends UnicastRemoteObject implements PersonSevice {
    private Date waktu;
    public PersonServiceServer() throws RemoteException {
    }
    public Person insertPerson(Person person) throws RemoteException {
        System.out.println("client sendang melakukan insert");

        PreparedStatement statement = null;
        try {
            statement = DatabaseUtilities.getConnection().prepareStatement("INSERT INTO person (id,nama_depan,nama_belakang,tanggal_lahir)"
                    + "VALUES(null,?,?,?)");
            statement.setString(1, person.getNama_depan());
            statement.setString(2, person.getNama_belakang());
            statement.setDate(3, new Date(person.getTanggal_lahir().getTime()));
            statement.executeUpdate();

            ResultSet result = statement.getGeneratedKeys();
            if (result.next()) {
                person.setId(result.getLong(1));
            }
            result.close();
            return person;

        } catch (SQLException exception) {
            exception.printStackTrace();
            return null;
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException exception) {
                    exception.printStackTrace();
                }
            }
        }
    }

    public void updatePerson(Person person) throws RemoteException {
        System.out.println("client sedang melakukan update");
        PreparedStatement statement = null;
        try {
            statement = DatabaseUtilities.getConnection().prepareStatement(
                    "UPDATE person SET nama_depan=?,nama_belakang=?,tanggal_lahir=? WHERE id=?");
            statement.setString(1, person.getNama_depan());
            statement.setString(2, person.getNama_belakang());
            statement.setDate(3, (java.sql.Date) new Date(person.getTanggal_lahir().getTime()));
            statement.setLong(4, person.getId());
            statement.executeUpdate();
        } catch (SQLException exception) {
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException exception) {
                    exception.printStackTrace();
                }
            }
        }
    }

    public void deletePerson(Long id) throws RemoteException {
       System.out.println("client sedang melakukan delete");
        PreparedStatement statement = null;
        try {
            statement = DatabaseUtilities.getConnection().prepareStatement(
                    "DELETE FROM person where id=?");
            statement.setLong(1, id);
            statement.executeUpdate();
        } catch (SQLException exception) {
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException exception) {
                exception.printStackTrace();
            }
        }
    }

    public Person getPerson(Long id) throws RemoteException {
        System.out.println("client sedang melakukan get satu record");
        PreparedStatement statement = null;
        try {
            statement = DatabaseUtilities.getConnection().prepareStatement(
                    "SELECT *FROM person where id=?");
            statement.setLong(1, id);
            ResultSet result = statement.executeQuery();
            Person person = null;
            if (result.next()) {
                person = new Person();
                person.setId(result.getLong("id"));
                person.setNama_depan(result.getString("nama_depan"));
                person.setNama_belakang(result.getString("nama_belakang"));
                person.setTanggal_lahir(result.getDate("tanggal_lahir"));
            }

            return person;
        } catch (SQLException exception) {
            exception.printStackTrace();
            return null;
        } finally {
            try {
                if (statement != null) {
                    statement.close();

                }
            } catch (SQLException exception) {
                exception.printStackTrace();
            }
        }
    }

    public List getPerson() throws RemoteException {
      //  System.out.println("client sedang melakukan getAll");
        Statement statement = null;
        try {
        statement = DatabaseUtilities.getConnection().createStatement();
            ResultSet result = statement.executeQuery("SELECT *FROM person");
            List list = new ArrayList();
            while (result.next()) {
                Person person = new Person();
                person.setId(result.getLong("id"));
                person.setNama_depan(result.getString("nama_depan"));
                person.setNama_belakang(result.getString("nama_belakang"));
                person.setTanggal_lahir(result.getDate("tanggal_lahir"));
                list.add(person);
            }
            result.close();
            return list;
        } catch (SQLException exception) {
            exception.printStackTrace();
            return null;
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException exception) {
                exception.printStackTrace();
            }
        }

    }
}

sampai disini DAO(data akses objek) sudah dibuat. sekarang tinggal buat servernya yg berada di Main.java

package stta.bahrie.sisterserver;
 
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import stta.bahrie.sisterserver.sevice.PersonServiceServer;
/**
 *
 * @author bahrie
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws RemoteException {
        // TODO code application logic here
        Registry server=LocateRegistry.createRegistry(1234);
        PersonServiceServer personService=new PersonServiceServer();
        server.rebind("service", personService);
        System.out.println("Server berhasil berjalan");
    }
}

disini saya menggunakan port 1234 supaya mudah diingat...hehee dan port ini bisa dirubah tapi sebaiknya gunakan yg blum digunakan secara pasti seperti portnya mySQL ataupun Oracle dan semacamnya.. dan untuk pembuatan nomor port jangan ikuti saya yg menggunakan alasan supaya mudah diingat..


sampai disini server sudah terbentuk.. silahkan ditest dengan cara klik kanan project dan klik run.


untuk project clientnya akan saya taruh dipostingan selanjutnya..

selamat mencoba..

10 Komentar (+add yours?)

  1. ariska138
    Nov 16, 2011 @ 06:05:20

    Insya’allah akan ku coba. trus dalam pembuatan Aplikasi client-server database hal paling utama yang harus kita perhatikan apa mas? dan biasanya tingkat kesulitannya dimana… trimakasih.

    Balas

  2. Radiks
    Jan 27, 2012 @ 13:06:09

    mas ketika aku coba di netbeans 6.9 banyak yg error & kodenya ko g sama ama yg udah jadi yaaaa…
    thannkkkksssss

    Balas

    • bahrie
      Jan 27, 2012 @ 13:35:08

      kemungkinan ada library yang belum di masukkan. kan ada library jCalendernya juga lo ga salah. 😀 di lihat errornya apa, terus coba paste in di sini. 😀

      Balas

  3. feby
    Jun 30, 2012 @ 15:35:29

    Mas , jika terdapat client lebih dari satu melakukan proses input ke server secara waktu yang bersamaan , cara untuk menangani proses tersebut tidak terjadi kres gimana ?.makasi sebelumnya

    Balas

    • bahrie
      Jul 03, 2012 @ 13:21:17

      itu butuh teknik. pelajari aja yg sudah ada cari digoogle.. kemaren saya baca di milistnya java indonesia juga lagi bahas itu..

      Balas

  4. irfanwiners
    Nov 22, 2012 @ 16:40:18

    aplikasinya dah jalan…pas masukin nama di insert kok gag keluar ya mz?itu knpa?

    Balas

  5. aseprojali
    Des 29, 2012 @ 17:47:34

    Ubek2 malah pusing sendiri mas bahrie :D,

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at stta.bahrie.client.model.TableModelPerson.getValueAt(TableModelPerson.java:57)
    at javax.swing.JTable.getValueAt(JTable.java:2720)
    at javax.swing.JTable.prepareRenderer(JTable.java:5718)
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)

    Balas

    • bahrie
      Des 29, 2012 @ 18:57:05

      Nullpointerexception artinya kembalian nya null. nah dicari yg null apanya?? itu table dia butuh data, kalo endak ada data maka akan error. paling tidak datanya itu null. nah itu kemungkinan dia tidak dapat data dari database. nah coba di isi satu ato dua data di table yg di panggil terus dijalanin lagi. blajar java dasar lagi mas. java fundamental. terus jdbc. biar kalo ada error cepet paham.hehe 😀

      Balas

  6. aseprojali
    Des 29, 2012 @ 20:23:08

    woke mas bahrie 🙂
    Nah mau tanya lagi ini kan mas bikin framenya lngsung d bikin dari frame,saya coba d buat pake panel.sementara klo misalnya kita buat parameter di panel pas kita narik panel ke jframe malah jframenya jg minta parameter lg.
    kasus yang aplikasi ini mas 😀

    Balas

Tinggalkan Balasan ke bahrie Batalkan balasan