Aplikasi GRAILS dengan persistence GORM ( Grails Object Relational Mapping )

Object relational mapping ( ORM ) pada umumnya menggunakan Framework Hibernate atau EclipseLink sebagai provider-nya. Grails memiliki ORM tersendiri walaupun teknologinya mirip seperti Hibernate ataupun EclipseLink namun sedikit berbeda dalam penggunaanya. Penggunaan GORM dapat dengan mudah merelasikan Object ( Tabel ) yang satu dengan yang lain baik relasi one to many, many to one atau many to many. Sebelum melakukan setup GORM, kita harus setup DataSource terlebih dahulu untuk menentukan database yang akan digunakan, jika tidak kita akan menggunakan database default dari Grails yaitu H2 database yang sifatnya embeddable terhadap aplikasi.
1. Siapkan database dalam contoh ini kita akan menggunakan PostgreSQL dengan nama database simplegrailscrud
Masuk kedalam console psql

Membuat database simplegrailscrud dan menampilkan dalam daftar database

Masuk dan aktif kedalam database simplegrailscrud, dan buat schema master

Menampilkan search_path schema dan aktif kedalam schema master

2. Setup datasource dalam aplikasi grails.
Tampilan datasource awal dalam aplikasi grails

Merubah datasource dan database driver di Grails,

#Part datasource
pooled = true , artinya koneksi database dapat di pool / share
driverClassName = nama driver database, PostgreSQL
username = nama user database
password = password database
#Part environments
development = database untuk fase development program
test = database untuk fase test development program
production = database untuk fase production
karena kita fase development dan test, maka kedua setup environment tersebut harus sama
dbCreate = diubah ke update supaya data tidak hanya disimpan dalam memory tapi juga di-Flush kedalam database
url = diarahkan ke url database yang dituju
3. Tambah dependency driver JDBC PostgreSQL menggunakan gradle pada file BuildConfig.groovy

4. Siapkan desain ORM untuk aplikasi
dalam desain ini, Terdapat class Bank yang memiliki relasi One to Many terhadap class Branch, kemudian class Branch memiliki relasi One to Many terhapad class Account. Sehingga class Bank memiliki relasi Many to Many dengan class Account

5. Memodelkan class sesuai dengan desain yang telah ada
static hasMany = [branches: Branch] artinya class Bank memiliki banyak Branch dengan variabel branches

package simplegrailscrud

class Bank {

    static hasMany = [branches: Branch]

    String bankCode
    String bankName
    String location

    String toString(){
        return "${ bankCode - bankName }"
    }

    static mapping = {
        table name: "bank", schema: "master"
        autoTimestamp( true )
        sort 'bankCode'
        order 'asc'
    }

    static constraints = {
        bankCode( nullable: false, unique: true )
        bankName( nullable: false )
        location( maxSize: 2000 )
        branches();
    }
}

Class Branch, static belongsTo= [bank: Bank] artinya setiap data class Branch akan memiliki 1 relasi dengan class Bank menggunakan variabel bank. static hasMany = [accounts:Accounts] artinya class Branch memiliki banyak accounts.

package simplegrailscrud

class Branch {
    static belongsTo = [bank:Bank]
    static hasMany = [accounts:Accounts]

    String branchName

    static mapping = {
        table name: "branch", schema: "master"
        autoTimestamp( true )
        sort 'branchName'
        order 'asc'
    }

    static constraints = {
        bank()
        branchName()
        accounts()
    }
}

Class Accounts, static belongsTo = : artinya setiap class Accounts memiliki 1 relasi dengan class Branch

package simplegrailscrud

class Accounts {

    static belongsTo = :

    String accountName
    String accountType

    static mapping = {
        table name: "accounts", schema: "master"
        autoTimestamp( true )
        sort 'accountName'
        order 'asc'
    }

    static constraints = {
        accountName( nullable: false )
        accountType( inList: [ "basic", "silver", "gold" ])
        branch()
    }
}

setelah selesai membuat semua class/ domain, selanjutnya adalah men-generate class- class tersebut untuk menjadi Controller dan Views menggunakan command grails.
6. Jalankan aplikasi

Tagged: , , , , , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: