Coding4ever’s Blog

Just coding… coding… and coding… because coding should be fun :)

Unit of Work Pattern

| Comments

Kalau sudah membahas Repository Pattern rasanya kurang manteb jika tidak membahas Unit of Work Pattern, dua pattern ini biasanya sering digunakan secara bersamaan. Kata emak-emak “ibarat sop ayam tanpa garam, rasanya hambar” he he :D

Unit of Work Pattern digunakan untuk mengelompokan satu atau beberapa operasi (biasanya operasi CRUD) ke dalam satu kesatuan transaksi. Jika salah satu operasi gagal, yang lain juga harus dibatalkan. Jadi cara kerja Unit of Work Pattern ini mirip dengan salah satu fitur andalan DBMS yaitu transaction.

Unit of Work Pattern sendiri merupakan salah satu pattern kesukaan Microsoft, ini bisa dilihat dari salah satu produk open source Microsoft yang menggunakan pattern ini yaitu Entity Framework. Bagi Anda yang sudah pernah mencoba Entity Framework mungkin sudah tidak asing lagi dengan class EF Context yang menggunakan Unit of Work Pattern.

Membuat Interface dan Class Konkret Unit of Work

Sama seperti pembahasan Repository Pattern, impelmentasi Unit of Work Pattern juga disarankan menggunakan interface.

Berdasarkan contoh project Repository Pattern, kita akan menambahkan interface baru dengan nama IUnitOfWork. Di dalam interface ini kita membuat beberapa property dengan tipe interface repository.

Setelah itu kita buatkan class konkretnya dengan nama UnitOfWork, dan ingat class ini harus mengimplementasikan interface IUnitOfWork.

Terakhir kita lengkapi kode class UnitOfWork seperti berikut :

Testing Class Unit of Work

Sebagai penutup kita akan melakukan tes sederhana dengan menggunakan aplikasi console. Dari hasil tes ini akan terlihat begitu mudahnya menerapkan konsep transaction menggunakan Unit of Work Pattern.

Selamat MENCOBA :)

dapper .net, unit of work pattern, visual c#

Tentang Penulis

Software developer yang fokus mengembangkan aplikasi di atas platform .NET (Desktop, ASP.NET MVC, Web Service) dan Android. Senang mempelajari teknologi baru terutama di bidang OOP, Design Pattern, ORM, Database dan Continuous Integration & Deployment.
Saat ini bekerja sebagai staf IT di salah satu PTS di Yogyakarta sebagai senior software developer. Di waktu luang insya Alloh akan terus berbagi pengalaman di blog ini :)

« Repository Pattern Membuat User Function Library pada Crystal Report .NET »

Comments