Jadi apa itu persistance layer? Persistance layer adalah sebuah layer khusus yang bertugas untuk melakukan tugas Create, Update, Delete data dalam sebuah kesatuan aplikasi.
Persitance itu sendiri artinya adalah pengolahan data baik itu GET, CREATE, UPDATE atau DELETE (CRUD), entah itu data itu berbentuk database, file, json atau lainnya.
Daftar Isi
Sedangkan layer artinya pembukus, atau lapisan.
Fungsi Persistance Layer
Persistance layer berfungsi untuk memisahkan pemrosesan data dari business layer. Sehingga business layer menjadi lebih kurus dan bisa fokus ke tugas utamanya yaitu data manipulation / memproses data sesuai kebutuhan.
Fungsi lainnya adalah dengan membuat persistance layer, jika suatu saat terjadi perubahan sumber data, kalian tidak usah mengubah kodingan di business layer, tapi cukup dengan mengubah di bagian persistance layer.
Bisa kasi contoh tentang Persistance layer?
Contoh penggunaan persistance layer berkaitan erat dengan repository design pattern.
Contoh tanpa persistance layer.
class ArticleController {
// ... constructor etc ...
public function getArticle()
{
$id = $_GET['id'];
// Cari dari database MySQL
$sql = "SELECT * FROM article WHERE (...etc)";
if (! $result = mysqli_query($this->connection, $sql)) {
// Error
throw new \Exception('Artikelnya gak ketemu pak');
}
$row = mysql_fetch_row($result);
// Proses $row ...
echo json_encode(['article' => $row]);
}
// Rest of CRUD
}
Misalnya kita buat sebuah respository dengan nama ArticleRepository
clas ArticleRepository {
public function findAll(){
// Cari dari database MySQL
$sql = "SELECT * FROM article WHERE (...etc)";
if (! $result = mysqli_query($this->connection, $sql)) {
// Error
throw new \Exception('Artikelnya gak ketemu pak');
}
$row = mysql_fetch_row($result);
return $row;
}
}
Kemudian implementasi persistance layer di controller sebelumnya.
class ArticleController {
// ... constructor etc ...
public function getArticle()
{
$id = $_GET['id'];
$repo = new ArticleRepository();
$article = $repo->findById($id);
return response()->json(['article' => $article]);
}
}
Nah itulah contoh implementasi persistance layer.
Jadi misalnya kita ingin mengubah cara kita mengambil data, kita tidak perlu lagi mengubah controller, melainkan cukup mengubah di Repository saja.
Nah itulah penjelasan tentang persistance layer, semoga mencerahkan ya guys!