Alasan terbesar saya cenderung memiliki lapisan layanan adalah karena dua alasan berikut...
-
Menandai metode sebagai @Transactional sehingga semua permintaan DAO di dalam metode ini terjadi dalam satu transaksi.
-
Saya dapat meningkatkan pemisahan perhatian dari DAO dan peran pengguna. Saya dapat menandai metode sebagai memerlukan peran pengguna tertentu dan karena itu sangat cocok dengan Spring Security.
Anda bisa memanggil DAO dari pengontrol, tetapi itu membuat Anda macet jika Anda ingin memperluas nanti. Untuk mendapatkan koneksi, Anda dapat menggunakan tandai layanan sebagai @Transactional dan DAO sebagai @Repository dan Spring akan menangani keseluruhan mendapatkan objek sesi untuk Anda dan injeksi dll.
Saya cenderung berpikir (mungkin salah) dari lapisan layanan sebagai fasad yang diakses, baik itu dari layanan web atau pengontrol atau apa pun, itu membuat pemisahan.