Beberapa bulan terakhir saya menggunakan doctrine sebagai ORM pada project yang saya kerjakan. Sebenarnya ORM untuk PHP bukan cuma doctrine saja, ada juga propel. Tapi mungkin ini juga yang disebut cinta pada pandangan pertama, sehingga saya memilih doctrine.
Pemilihan penggunaan ORM ini sebenarnya setelah sekian lama bergelut dengan manajemen database seperti ini yang terasa melelahkan dan juga membosankan. Yang mana harus membuat DDL script sendiri untuk setiap table, constraint, dan juga membuat DML untuk insert dummy data. Huh, sungguh melelahkan! Belum lagi nanti pas migrasi database antar setiap rilis yang selalu membuat harap - harap cemas.
Di sini saya tidak akan menjelaskan maupun memberikan snippet untuk penggunaan Doctrine pada Zend Framework, karena itu sudah dibahas di sini dan di sini. Nanti yang ada hanya pemborosan. Pada tulisan kali ini saya hanya ingin menjelaskan bagaimana masalah - masalah yang saya hadapi sekarang ini dapat deselesaikan dengan seksama dan dalam tempo sesingkat - singkatnya dengan menggunakan doctrine. Buat yang belum tau apa itu doctrine mungkin akan saya jelaskan di postingan berikutnya.
Model dan Tabel di Database
Zend Framework menganut pola MVC. Sehingga untuk mengakses tabel - tabel yang ada di database tidak perlu melakukan query, tapi cukup hanya membuat object dari model tabel tersebut. Tanpa menggunakan doctrine, model dan table di database harus dibuat secara manual, setelah membuat table maka kita harus membuat model yang mengarah ke tabel tersebut. Bekerja dengan tabel dalam jumlah sedikit tentunya tidak terlalu masalah dengan menggunakan cara yang seperti ini. Tapi bagaimana bila project yang dikerjakan menggunakan 50 tabel atau bahkan lebih? Mungkin ini akan menyisakan pegal - pegal dan sakit kepala. Dengan menggunakan doctrine, kita tidak perlu melakukan hal seperti itu, cukup dengan membuat deskripsi dari table yang ingin dibuat pada schema file dalam format yaml, kemudian dengan menjalankan sedikit command ajaib maka model dan table di database akan dibuat secara otomatis. Dengan catatan, model yang sudah dibuat dengan doctrine bukan merupakan turunan dari Zend_Db_Table. Jadi untuk mengakses method - method yang ada di dalamnya bisa melihat API dari doctrine tersebut.
Migrasi Database Antar Setiap Rilis
Pada metodologi Agile, project dirilis dalam beberapa iterative. Jadi project tersebut ditest dan diimplementasikan pada klien dalam beberapa tahap. Kita harus melakukan migrasi database jika ada perubahan terhadap database. Migrasi ini ditujukan untuk melakukan perubahan terhadap database tanpa harus merusak data yang sudah ada pada project yang sudah diimplementasikan di klien pada rilis sebelumnya. Hal ini dapat dilakukan dengan menggunakan teknik yang sudah saya sebutkan sebelumnya di atas, dengan membuat DDL script terlebih dahulu. Sungguh melelahkan lagi. Dengan doctrine, kita tidak perlu berlelah - lelah lagi membuat DDL script untuk migrasi database. Doctrine melakukan migrasi dengan membuat class untuk migrasi terlebih dahulu. Wah, harus buat class lagi dong? Lebih repot lagi dari buat DDL script! Tenang, sejak doctrine versi 1.1.3 doi bisa membuat class migrasi sendiri dengan menggunakan command ajaib lagi. Class ini dibuat dengan cara membandingkan schema file dengan model - model yang ada. Kemudian dengan command ajaib berikutnya doctrine melakukan migrasi database berdasarkan class migrasi yang sudah dibuat sebelumnya.
Database Yang Universal
Zend_Db_Table juga sudah mendukung database yang universal, dengan catatan tabel - tabelnya sudah ada di database. Jika belum, maka kita harus mengkonversi database, tabel maupun tipe data yang sudah kita buat. Untuk ini dapat dilakukan dengan cara manual maupun bantuan program lain. Dengan menggunakan doctrine, proses konversi database sudah cukup gampang. Karena kita tidak perlu lagi mengkonversi database, tabel, maupun tipe data yang sudah dibuat pada schema file. Doctrine akan melakukan perubahan sesuai dengan DSN yang kita gunakan. Jadi tidak perlu pusing mikirin konversi database.
Sekian dulu cerita saya tentang penggunaan doctrine dengan Zend Framework. Nanti akan saya posting lagi cerita - cerita seru doctrine dan Zend Framework lainnya.
Wassalam
Comments
Kirim Komentar