Jumat, 22 Mei 2015

Penyimpanan Data



Untuk menyimpan suatu java object ke table, dibutuhkan field dengan tipe data BLOB, berikut adalah cara menyimpan java object (dalam hal ini javabean) kedalam database, gw pake JDK 6.0 dan MySQL 5. Misalkan ada javabean dengan nama BeanTest (usahakan selalu implements Serializable), dengan struktur dibawah ini :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.Serializable;

public class BeanTest implements Serializable {

    private String nama;
    private String alamat;

    /**
     * @return the nama
     */
    public String getNama() {
        return nama;
    }

    /**
     * @param nama
     *            the nama to set
     */
    public void setNama(String nama) {
        this.nama = nama;
    }

    /**
     * @return the alamat
     */
    public String getAlamat() {
        return alamat;
    }

    /**
     * @param alamat
     *            the alamat to set
     */
    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }

}
lalu buat table di database
1
2
3
4
5
6
7
8
create database testest;
use testest;

CREATE TABLE IF NOT EXISTS x (
satu varchar(5) NOT NULL DEFAULT ” ,
dua blob ,
PRIMARY KEY (satu)
);
Lalu buatlah class yang akan digunakan untuk berhubungan dengan database, gunakan method setData() untuk memasukkan object ke database, dan getData() untuk mengambil data dari database.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main {

    public static void main(String[] args) {
        Main main = new Main();

        // simpan data ke database
        main.setData();

        //tarik isi database
        main.getData();
    }

    private void setData() {
        try {

            BeanTest bean = new BeanTest();

            bean.setNama("edwin");
            bean.setAlamat("jakarta");

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testest", "root", "");
            java.sql.PreparedStatement statement = con.prepareStatement("insert into x values (?,?)");

            statement.setString(1, "00001");
            statement.setBytes(2, toBytes(bean));

            statement.executeUpdate();

            statement.close();
            con.close();
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private byte[] toBytes(Object object) {
        java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
        try {
            java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(baos);
            oos.writeObject(object);
            oos.flush();
            oos.close();
        } catch (Exception ioe) {
            ioe.getMessage();
        }

        return baos.toByteArray();
    }

    private void getData() {
        try {
            Class.forName("com.mysql.jdbc.Driver");

            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testest", "root", "");
            Statement statement = con.createStatement();
            ResultSet res = statement.executeQuery("select * from x");

            while (res.next()) {
                Object o = toObject(res.getBytes(2));

                if (o instanceof BeanTest) {
                    BeanTest beanTest = (BeanTest) o;
                    System.out.println(beanTest.getNama());
                    System.out.println(beanTest.getAlamat());

                }
            }
            statement.close();
            con.close();
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private Object toObject(byte[] bytes) {
        Object object = null;
        try {
            object = new java.io.ObjectInputStream(
                    new java.io.ByteArrayInputStream(bytes)).readObject();
        } catch (Exception cnfe) {
            cnfe.getMessage();
        }
        return object;
    }
}
sekian dan terima kasih,
Wassalam.

1 komentar:

  1. Best Casinos Near Me (MapYRO) | 2021 - Mapyro
    Find the best casinos in your area 안동 출장안마 today. 의왕 출장샵 MapYRO provides 평택 출장샵 the best casino information 남양주 출장안마 on all of your local businesses 경주 출장샵 and visitors in the United States.

    BalasHapus