Welcome to Abdul Malik Ikhsan's Blog

Zend Framework – Registering Zend Database Adapter in Registry for Complex Queries

Posted in Tutorial PHP, Zend Framework by samsonasik on November 11, 2010

Zend Framework menggunakan 2 diantara 4 Data Source Architectural Patterns yang diperkenalkan oleh Martin Fowler, yaitu Table Data Gateway (object bentukan bertugas sebagai pintu gerbang table ) dan Row Data Gateway (object bentukan bertugas sebagai pintu gerbang single record), sama dengan Active Record, hanya saja di dalam Active Record bisa ditambahkan domain logic. How about performance ? Yeah, An ORM will always come with a performance penalty. Tetapi, kita seharusnya tidak mengesampingkan ORM hanya karena hal tersebut. Kelebihan memakai teknik ORM ini adalah memetakan table ke dalam object dengan property-property di dalamnya yang berhubungan dengan table sehingga mengubah pola pikir kita dari complex query menjadi lebih sederhana.

Hanya saja, perlu diakui, ORM dalam kaitannya dengan filtering, updating, maupun inserting ke dalam table dengan logic yang rumit akan jadi hambatan bagi developer. ORM cocok sekali dipakai untuk hal-hal yang bersifat CRUD dan operasi-operasi sederhana yang butuh kecepatan ketimbang menuliskan query yang kompleks. Ketika query yang rumit dan kompleks kita perlukan, kita sebaiknya menggunakan Query biasa :).

Zend Framework memberikan solusi pada permasalahan ini. Kita bisa menyimpan database adapter ke dalam registry.
Anggap saja kita mempunyai konfigurasi database seperti berikut :

;db config
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "your.database.host"
resources.db.params.dbname = "database_name"
resources.db.params.username = "username"
resources.db.params.password = "password"

Nah, di file bootstrap atau index.php, kita bisa define deh :

$fileconfig= APPLICATION_PATH.'/configs/application.ini';
$config=new Zend_Config_Ini($fileconfig,APPLICATION_ENV);
$db= Zend_Db::factory($config->resources->db->adapter,$config->resources->db->params);
Zend_Registry::set('db',$db);

Dan ketika sewaktu-waktu kita perlukan, kita bisa panggil langsung, misal :

$db = Zend_Registry::get('db');
$query = $db->query(" this is a complex query for table relation for selecting, updating, or filtering which can't be handled by ORM");

Referensi :
Patterns of Enterprise Application Architecture, Fowler, Martin
http://efreedom.com/Question/1-2034201/Set-Current-User-View
http://framework.zend.com/manual/en/zend.db.html
http://en.wikipedia.org/wiki/Zend_framework

 

Advertisements

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: