Membuat File Konfigurasi Koneksi Database di Java

Post berikut ini melanjutkan postingan sebelumnya mengenai cara menampilkan data dari database menggunakan Java.

Di post tersebut, ketika kita melakukan koneksi ke database, kita harus menuliskan konfigurasi database seperti host, username, password, dan database yang digunakan di dalam source code tersebut.

Hal seperti ini tentunya menjadi masalah ketika konfigurasi database kita berubah, ya, kita harus membongkar source code lagi dan mengubahnya.

Pada post berikut ini, akan dijelaskan bagaimana membuat file konfigurasi koneksi database, sehingga ketika konfigurasi database kita berubah, kita tidak perlu membongkar source code aplikasi Java kita lagi.

Sedikit berbeda dengan post sebelumnya, di sini saya akan menggunakan teknik yang berbeda dalam melakukan query database. Saya menggunakan Data Access Object (DAO) design pattern untuk memudahkan query.

Membuat File Konfigurasi Koneksi Database di Java

Sekarang buatlah project Java baru, misalnya bernama JavaMySQL. Oh iya, di sini saya menggunakan database world.sql yang di dapat dari website MySQL. Anda dapat menggunakan database apapun, yang penting secara konsep untuk membuat file konfigurasi ini sama saja.

Sebelum melangkah lebih lanjut, semoga anda sudah paham apa yang akan kita kerjakan.

Jadi intinya adalah kita akan membuat file konfigurasi berbentuk file teks sehingga ketika konfigurasi database kita berubah, kita cukup merubah file tersebut. Berikut ini adalah file konfigurasi database.cfg yang akan kita buat. Simpan di dalam folder src di dalam project kita (…/JavaMySQL/src/database.cfg)

#Database Configuration
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/services
user=root
password=

AgarĀ  file konfigurasi tersebut dapat digunakan, tentunya harus ada program yang membaca file tersebut. Oleh karenanya, sekarang buatlah class baru dengan nama DatabaseConfig.java

Di dalam class DatabaseConfig.java terdapat method yang membaca isi dari file database.cfg sehingga dapat dimanfaatkan dalam koneksi ke dalam database. Berikut ini adalah source code dari DatabaseConfig.java

package javamysql;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DatabaseConfig {

    private static Connection con = null;

    public static Connection getConnection() {
        if (con != null) {
            return con;
        } else {
            try {
                Properties prop = new Properties();
                InputStream is = DatabaseConfig.class.getClassLoader().getResourceAsStream("database.cfg");
                prop.load(is);

                String driver = prop.getProperty("driver");
                String url = prop.getProperty("url");
                String user = prop.getProperty("user");
                String password = prop.getProperty("password");

                Class.forName(driver);
                con = DriverManager.getConnection(url, user, password);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return con;
    }
}

Selanjutnya kita akan membuat sebuah class yang berfungsi sebagai model (setter dan getter). Untuk membuat setter dan getter kita dapat menggunakan fasilitas generate yang ada di Netbeans, yaitu dengan cara menekan tombol Alt+Insert.

Class tersebut saya beri nama Query.java Berikut ini adalah source code Query.java

package javamysql;

/**
 *
 * @author Azuharu
 */
public class Query {
    private String code;
    private String name;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}

Dan berikut ini adalah class ExecuteQuery3.java yang berfungsi untuk melakukan query ke database.

package javamysql;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author Azuharu
 */
public class ExecuteQuery3 {

    private Connection con;

    public ExecuteQuery3() {
        con = DatabaseConfig.getConnection();
    }
    
    public ArrayList<Query> getQuery(){
        ArrayList<Query> query = new ArrayList<Query>();
        try {
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select Code, Name from country");
            while (rs.next()) {
                Query q = new Query();
                q.setCode(rs.getString("Code"));
                q.setName(rs.getString("Name"));
                query.add(q);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return query;      
    }
}

Terakhir, ini adalah class QueryRun.java yang berfungsi sebagai main class dalam project.

package javamysql;

import java.util.ArrayList;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Azuharu
 */
public class QueryRun {

    public static void main(String[] args) {
        ExecuteQuery3 ex = new ExecuteQuery3();
        ArrayList<Query> query = ex.getQuery();
        //Query q = new Query();
        for (int i = 0; i < query.size(); i++) {
            System.out.println(query.get(i).getCode() + " "+query.get(i).getName());
        }
    }
}

Semoga bermanfaat

Leave a Comment