Skip navigation

Monthly Archives: Juni 2009


Seringkali di sebuah domain persoalan kita membutuhkan sebuah perangkat pemrograman untuk menyelesaikan masalah. Berbeda dengan general purpose programming language seperti Java, C, C++, dan lain-lain, ada beberapa bahasa pemrograman yang diciptakan hanya untuk dipakai pada permasalahan tertentu. Bahasa seperti ini disebut DSL atau Domain specific language. Untuk membuat bahasa-bahasa baru seperti ini dibutuhkan kemampuan untuk membuat compiler atau interpreter bahasa tersebut.

Pak Joe baru merilis sebuah tutorial sederhana bagaimana membuat compiler atau interpreter untuk sebuah bahasa pemrograman. Tutorial bisa dibaca di sini. Sejauh yang saya baca, tutorialnya cukup sederhana tapi lumayan komprehensif: mengenalkan kita kepada konsep parsing, abstract syntax tree, assembly, dan lain-lain.

Well, kebetulan saya gak sempat ngambil mata kuliah Teknik Kompilasi, tapi menurut saya ini cukup berguna buat pengenalan awal.


Persistence adalah sebuah fitur yang mampu melakukan mapping object ke relasional. Dengan adanya fitur ini maka kita bisa dengan mudah melakukan pengembangan objek dengan menggunakan basisdata tanpa harus mengkodekan koneksi manual ke database. Kemaren gw baru nyobain fitur persistence itu untuk Java EE dengan menggunakan Netbeans dan MySQL.

Ceritanya gw bikin sebuah table namanya products

CREATE TABLE `product` (
`ID` VARCHAR( 8 ) NOT NULL ,
`Name` TEXT NOT NULL ,
`Price` INT NOT NULL ,
`Quantity` INT NOT NULL ,
PRIMARY KEY ( `ID` )
) ENGINE = MYISAM ;

Untuk melakukan manajemennya bisa dilihat di sini.
Nantinya akan keluar
mysql1

Setelah itu kita bikin aplikasi berbasis Java EE, entah itu Enterprise app atau sekadar Web app.
Nah kita langsung coba bikin Class dari database.

mysql2

Setelah itu tinggal ikutin langkah-langkah aja.

mysql3

Kita pilih data source yang diperlukan…. Terus abis itu kita pilih table-table yang dibutuhkan juga… Dan nanti masing-masing table akan menjadi sebuah class.

mysql4

Nah nantinya kita akan punya sebuah class Product. (Nama product terpaksa direname sendiri karena pada table biasanya menggunakan nama plural sedangkan nama class biasanya singular)

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author Petra Barus
 */
@Entity
@Table(name = "products")
@NamedQueries({@NamedQuery(name = "Product.findAll", query = "SELECT p FROM Product p"), @NamedQuery(name = "Product.findById", query = "SELECT p FROM Product p WHERE p.id = :id"), @NamedQuery(name = "Product.findByPrice", query = "SELECT p FROM Product p WHERE p.price = :price"), @NamedQuery(name = "Product.findByQuantity", query = "SELECT p FROM Product p WHERE p.quantity = :quantity")})
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID")
    private String id;
    @Basic(optional = false)
    @Lob
    @Column(name = "Name")
    private String name;
    @Basic(optional = false)
    @Column(name = "Price")
    private int price;
    @Basic(optional = false)
    @Column(name = "Quantity")
    private int quantity;

    public Product() {
    }

    public Product(String id) {
        this.id = id;
    }

    public Product(String id, String name, int price, int quantity) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.quantity = quantity;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    @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 Product)) {
            return false;
        }
        Product other = (Product) 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 "model.Product[id=" + id + "]";
    }

}

Ngeliat status di page PHP di Facebook, hari ini PHP berulang tahun ke 14. Sebenernya ultahnya tanggal 8 Juni, sekarang udah 9 Juni, tapi mari kita hormati waktu di benua bagian barat sana. Hehehe.

PHP adalah bahasa pemrograman web yang paling populer di dunia. At least itu menurut gw. Dan PHP adalah bahasa pemrograman web yang pertama kali gw kenal.

Gimana sih gw bisa kenal sama PHP?

Pertama kali gw kenal PHP itu di bangku SMA. Yup, seperti yang gw bilang di post ini, masa SMA adalah saat di mana gw mulai menekuni ilmu komputer. Sebelumnya gw emang pernah kenal Pascal di SD, QBasic, x86 assembly, Visual Basic, dan Java di bangku SMP. Tapi anehnya gw gak pernah setertarik itu sebelum di SMA.

Read More »

%d blogger menyukai ini: