Pola active record

Revisi sejak 1 Februari 2023 07.48 oleh Arya-Bot (bicara | kontrib) (Pranala luar: clean up, added uncategorised tag)
(beda) ← Revisi sebelumnya | Revisi terkini (beda) | Revisi selanjutnya → (beda)

Dalam ilmu komputer, pola active record (en:active record pattern) adalah sebuah pola desain (en:design pattern) yang sering ditemui dalam aplikasi enterprise.

Active record adalah salah satu pendekatan untuk membaca data dari sebuah basis data. Sebuah tabel atau view dibungkus ke dalam sebuah kelas sedemikian sehingga sebuah instansi objek terikat dengan satu baris tunggal dalam tabel. Setelah objek dibuat, sebuah baris baru ditambahkan pada tabel pada saat disimpan. Objek-objek yang dimuat mendapatkan informasi tentang dirinya dari basis data; ketika sebuah objek diubah, baris yang berkaitan dalam tabel juga diubah. Kelas pembungkus mengimplementasikan metode-metode aksesor untuk setiap kolom di dalam tabel atau view.

Implementasi Active Record dapat ditemukan dalam banyak sekali framework pemrograman, termasuk di antaranya dalam framework web CakePHP dan Ruby on Rails. Sebagai contoh, jika ada sebuah tabel onderdil dengan kolom id (kunci primer berseri), nama (tipe varchar) dan harga (tipe money atau presisi double), dan terdapat sebuah kelas Onderdil, kode berikut:

a = Onderdil.new
a.nama = "Contoh onderdil"
a.harga = 123.45
a.save

akan menyimpan sebuah baris baru dalam basis data dengan nilai-nilai yang diberikan, kurang-lebih sama dengan perintah SQL berikut ini:

INSERT INTO onderdil (nama, harga) values ('Contoh onderdil', 123.45);

Sebaliknya, kelas dapat digunakan untuk melakukan kueri ke basis data:

namaalat = "kotakperkakas"
b = Onderdil.find(:first,:conditions => [ "nama = ?", namaalat ])

akan membuat sebuah objek dari baris pertama basis data yang kolom nama-nya sama dengan isi variabel Ruby namaalat, kurang-lebih sama dengan perintah SQL:

SELECT * from onderdil WHERE nama = 'kotakperkakas' LIMIT 1;

Selain cara tersebut, kode di atas dapat diperpendek menjadi:

b = Onderdil.find_by_name("kotakperkakas")

Pranala luar

sunting