Entity Framework Part 1

Posted by Kamarudin • 3 minute read • Comments

Intro ORM

Sebelum kita membahas apa itu Entity Framework, kita akan singgung sedikit mengenai ORM (Object Relational Mapping).

ORM  adalah  framework  yang  memetakan  tabel  pada  database  relasional ke objek  dengan menggunakan  informasi  pada metadata.  Metadata  dapat  berupa  file  XML  atau custom atribute pada  entity class.

Saat ini sudah banyak pilihan ORM yang dapat meningkatkan  produktivitas kita sebagai seorang developer. Ketika kita membangun sebuah aplikasi database  dengan menggunakan OOP,  maka harus  dibuatkan  sebuah  persisten  objek  yang memodelkan objek dari database seperti tabel,  view , relationship dan objek database lainnya.

Persisten  objek (Object Persistence)

Hampir semua aplikasi membutuhkan persistensi data.  Jika tidak, ketika aliran listrik dimatikan maka data tersebut akan hilang.

Ketika akan menyimpan data secara permanen, database relasional adalah pilihan terbaik, sedangkan ketika harus bekerja dengan data yang ada di memori, objek adalah cara yang terbaik.

Fitur seperti pewarisan, enkapsulasi dan fitur OOP lainnya memungkinkan penulisan kode yang lebih baik dan menyederhankan pengembangan aplikasi.

Ketika  memodelkan  persisten  objek,  makin besar aplikasi yang  kita buat, maka makin rumit pemodelan yang dilakukan. Pemodelan dengan “tangan  kosong”  bukanlah  ide  yang  baik. Selain  banyak  waktu  yang  terbuang  karena  banyak perkerjaan yang di lakukan berulang-ulang, bisa jadi banyak kesalahan yang tidak bisa dihindari.

Salah satu solusi yang digunakan untuk mengatasi pemodelan dengan “tangan  kosong”  ini adalah dengan menggunakan ORM.

ORM mempunyai kemampuan untuk mengenerate secara otomatis persisten  objek berdasarkan schema dari database, konfigurasi file  XML  atau  custom atribute pada  entity class.

Pendekatan ORM  bisa jadi lebih efektif dan produktif, tetapi tetap saja ada kekurangannya yaitu eksekusi  program  cenderung lebih  lambat  daripada  tanpa  menggunakan  ORM. Hal ini disebabkan adanya  proses  mapping  terlebih dahulu  terhadap  tabel di  database. Proses  ini mengubah  ”record/tupel” menjadi  objek  atau  objek  collection. Namun  dengan perkembangan kecepatan processor dan kapasitas memory saat ini kekurangan ini dapat diatasi.

Berikut beberapa alasan mengapa menggunakan ORM :

  1. Productivity : Mempermudah penulisan kode pengaksesan data (DAO/Access Object)
  2. Maintainability  :  Kode  lebih  mudah  di  maintenance,  karena  tidak  perlu  lagi  menulis perintah SQL bersama-sama dengan kode utama, bahkan tidak perlu menuliskan SQL sekali.
  3. Performance : Kode lebih efesien sehingga bisa dioptimasi lebih lanjut
  4. Vendor Independence  :  Tidak tergantung penyedia DBMS. Jika terjadi perubahan data cukup diubah konfigurasi koneksi saja
  5. Mengatasi  Paradigm  “impedance mismatch”  :  Penyimpanan  data  dalam  RDBMS  dan  objek  sama  sekali berbeda. ORM menjadi layer perantara RDBMS dengan pemrograman berbasis objek.

Entity Framework

Entity Framework adalah salah satu ORM yang dibuat dan direkomendasikan Microsoft dalam pengembangan aplikasi.

Kita akan membahas lebih lanjut tentang Entity Framework pada postingan berikutnya, insyaAlloh :blush:

Dan sebagai penutup postingan kali ini, saya akan menampilkan cuplikan source code untuk mengakses database baik menggunakan library ADO.NET secara langsung dan menggunakan ORM Entity Framework.

Untuk database saya menggunakan SQL Server Express 2008 R2.

1

1. Menggunakan library ADO.NET secara langsung

var strConn = @"Data Source=.\sqlexpress2008;Initial Catalog=Retail;Integrated Security=True";

using (var conn = new SqlConnection(strConn))
{
    conn.Open();

    var sql = @"SELECT NamaSupplier, Jalan
                FROM Supplier";

    using (var cmd = new SqlCommand(sql, conn))
    {
        using (var dtr = cmd.ExecuteReader())
        {
            var noUrut = 1;

            while (dtr.Read())
            {
                Console.WriteLine("{0}. {1}, {2}", noUrut, dtr["NamaSupplier"], dtr.GetString(1));

                noUrut++;
            }
        }
    }
}

Penulisan kode seperti di atas, dengan menggunakan objek DataReader untuk menampung hasil SELECT, mirip dengan programmer VB classic yang menggunakan objek Recordset untuk menampung data, di mana kita masih berhubungan dengan baris dan kolom.

Makanya ketika kita ingin menampilkan nama supplier kita harus menyebutkan fieldnya yaitu “NamaSupplier” atau dengan menyebutkan indexnya.

Penulisan nama field “NamaSupplier”, masih berbasis teks sehingga IDE Visual Studio yang canggih pun tidak bisa berbuat banyak untuk membantu kita mengingat nama field apa saja yang tersedia untuk tabel Supplier berikut tipe datanya.

2. Menggunakan ORM Entity Framework

using (var db = new RetailContext())
{
    var noUrut = 1;

    var daftarSupplier = db.Suppliers.ToList();
    foreach (var supplier in daftarSupplier)
    {
        Console.WriteLine("{0}. {1}, {2}", noUrut, supplier.NamaSupplier, supplier.Jalan);

        noUrut++;
    }
}

Pendekatan yang kedua ini kita sudah tidak lagi berhubungan dengan baris dan kolom tetapi langsung berhubungan dengan objek dari masing-masing class entity/model. Sehingga ketika kita menuliskan objek supplier kemudian diikuti dengan karakter titik (.), IDE Visual Studio bisa membantu kita dengan fasilitas IntelliSensenya untuk menampilkan daftar property apa saja yang tersedia.

1

Sehingga aktivitas mengingat nama field berikut tipe datanya sudah tidak ada lagi disini :grin: , bahkan kita tidak perlu menuliskan secara manual perintah SQL yang digunakan untuk menampilkan data Supplier, semuanya semua pekerjaan ini sudah diambil alih oleh Entity Framework.

Dari sisi kecepatan, jelas menggunakan library ADO.NET secara langsung adalah pemenangnya, tetapi dari sisi kemudahan penulisan kode dan pengembangan aplikasi, Anda dan Saya pasti sepakat bahwa menggunakan ORM adalah pemenangnya :blush:

Selamat MENCOBA :blush:

Referensi :

  1. Programming Entity Framework, 2nd Edition
  2. Programming Entity Framework: Code First
  3. Programming Entity Framework: DbContext
  4. Entity Framework 4 in Action
  5. NET Enterprise Application Programming

Comments