Skenario:
- Stack: Java, Spring, Hibernate.
- Model: Aplikasi Client-Server.
- Pola: Model-View-Controller (MVC).
Kelas-kelas Lapisan Layanan memiliki tiga perilaku:
Beberapa layanan memiliki aturan bisnis dalam metode dan mendelegasikan ketekunan ke aplikasi. Suka:
EntityManager.save (entitas);
Beberapa layanan cukup memanggil fungsi basis data (melewati parameter) Seperti:
CallableStatement cls = con.prepareCall ("{call databaseFunction (args)}");
Beberapa layanan memiliki metode dengan kedua perilaku tersebut.
Pertanyaan saya:
- Apakah ada masalah dalam meminta layanan aplikasi memanggil - langsung - fungsi basis data? Bukankah ini dianggap praktik yang buruk? Apa yang akan menjadi model arsitektur yang berlaku untuk proyek seperti ini?
- Apakah ada masalah dalam memiliki campuran perilaku dalam layanan yang sama? Seperti transaksi dan konsistensi?
- Dalam hal pemeliharaan, apakah enkapsulasi ini membuatnya tidak jelas bagi pengembang bahwa ia juga harus mengubah fungsi dalam database? Bagaimana cara menghindarinya?
- Apakah skenario ini terjadi pada aplikasi lain di seluruh dunia atau itu hanya kesalahan arsitektur?