
Hai, habrozhiteli! Kami menerbitkan buku yang memberikan ikhtisar kerangka Spring 5 dan pola desain untuk itu. Prinsip injeksi ketergantungan dijelaskan, yang memainkan peran kunci dalam membuat kode yang digabungkan secara longgar dalam kerangka Spring. Kemudian, pola Gang of Four klasik diperiksa saat merancang aplikasi di Spring. Pada bagian-bagian berikut buku ini, penulis membahas pola-pola Aspect Oriented Programming (AOP), pola JDBC yang memungkinkan Anda untuk abstrak akses basis data. Dalam bab-bab terakhir buku ini, penulis mengeksplorasi bekerja dengan MVC, pola desain reaktif, dan pola desain yang digunakan dalam pemrograman paralel dan paralel di Spring.
Kami menyarankan agar Anda membiasakan diri dengan bagian "Pola" Objek Akses Data ""
Data Access Object (DAO) adalah pola desain yang sangat populer untuk tingkat persistensi dalam aplikasi J2EE. Ini memisahkan tingkat logika bisnis dari tingkat retensi. Pola DAO didasarkan pada prinsip berorientasi objek enkapsulasi dan abstraksi. Konteks untuk menggunakan pola DAO adalah akses ke data dan penyimpanannya tergantung pada implementasi spesifik dan jenis penyimpanan, misalnya, database berorientasi objek, file tidak terstruktur, database relasional, dll. Berdasarkan pola DAO, Anda dapat membuat antarmuka DAO dan mengimplementasikannya, untuk abstrak dan merangkum semua panggilan ke sumber data. Implementasi DAO yang serupa mengelola sumber daya basis data seperti koneksi ke sumber data.
Antarmuka DAO beradaptasi dengan sangat mudah untuk semua mekanisme sumber data yang mendasarinya, mereka tidak perlu diganti dengan perubahan dalam teknologi penyimpanan di tingkat yang lebih rendah. Pola ini memungkinkan Anda untuk menerapkan berbagai teknologi akses data tanpa memengaruhi logika bisnis aplikasi perusahaan. Mari pertimbangkan ara. 8.1 untuk lebih memahami prinsip-prinsip pola DAO.
Seperti yang Anda lihat dalam diagram, objek berikut terlibat dalam pola.
BusinessObject - objek yang bekerja di tingkat bisnis - klien untuk tingkat akses data. Dia membutuhkan data untuk mensimulasikan proses bisnis, serta menyiapkan objek Java untuk fungsi tambahan atau pengontrol aplikasi.
DataAccessObject adalah objek utama dari pola DAO. Menyembunyikan dari BusinessObject seluruh implementasi tingkat rendah dari database yang mendasarinya.
DataSource juga merupakan objek yang berisi semua informasi tingkat rendah tentang apa sebenarnya basis data yang mendasarinya: RDBMS, file tidak terstruktur, atau XML.
TransferObject - objek yang digunakan sebagai media penyimpanan. Digunakan oleh DataAccessObject untuk mengembalikan data ke BusinessObject.
Pertimbangkan contoh berikut dari pola DAO di mana AccountDao adalah antarmuka dari DataAccessObject dan AccountDaoImpl adalah kelas yang mengimplementasikan antarmuka AccountDao:
public interface AccountDao { Integer totalAccountsByBranch(String branchName); } public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao { @Override public Integer totalAccountsByBranch(String branchName) { String sql = "SELECT count(*) FROM Account WHERE branchName = "+branchName; return this.getJdbcTemplate().queryForObject(sql, Integer.class); } }
Membuat objek DAO di Musim Semi menggunakan pola desain Pabrik
Seperti yang Anda ketahui, banyak pola desain yang terlibat dalam kerangka Spring. Pola Pabrik adalah pola desain generik dan digunakan untuk membuat objek tanpa mengungkapkan logika yang mendasarinya kepada klien, serta menetapkan objek baru ke pemanggil menggunakan antarmuka umum atau kelas abstrak. Berkat Metode Pabrik dan Pola desain Pabrik Abstrak, fleksibilitas pola DAO yang sangat tinggi dapat dicapai.
Kami akan mencari tahu di mana dalam contoh kami, kami menerapkan strategi di mana pabrik memproduksi objek DAO untuk implementasi database umum (Gbr. 8.2).
Anda dapat melihat pada diagram sebelumnya bahwa AccountDaoFactory menghasilkan objek AccountDao, yaitu, itu adalah pabrik untuk itu. Basis data yang mendasarinya dapat diganti kapan saja, sementara kode bisnis tidak perlu diubah - pabrik melakukan pekerjaan ini. Pegas mendukung penyimpanan semua DAO di pabrik komponen serta di pabrik DAO.
Pola Pemetaan Data
Kerangka kerja ORM menyediakan pemetaan antara objek dan database relasional, karena objek dan tabel database relasional menyimpan data aplikasi dengan berbagai cara. Selain itu, objek dan tabel memiliki berbagai mekanisme untuk penataan data. Saat menggunakan solusi ORM apa pun dalam aplikasi Spring, seperti Hibernate, JPA, atau JDO, tidak perlu khawatir tentang mekanisme pemetaan antara objek dan database relasional.
Mari pertimbangkan ara. 8.3 untuk lebih memahami pola "Data Mapper".
Dalam diagram, objek Akun dipetakan ke basis data relasional menggunakan antarmuka AccountMapper. AccountMapper memainkan peran sebagai perantara dalam aplikasi antara objek Java dan basis data yang mendasarinya. Pertimbangkan pola lain yang digunakan pada tingkat akses data.
Pola "Model Domain"
Model domain adalah objek yang memiliki data dan perilaku, di mana perilaku menentukan logika bisnis aplikasi perusahaan, dan data mewakili informasi tentang hasil bisnis. Model domain menggabungkan data dan prosesnya. Dalam aplikasi perusahaan, model data terletak di bawah tingkat bisnis dan mendefinisikan logika bisnis, mengembalikan hasil perilaku bisnis. Pertimbangkan diagram berikut untuk kejelasan (Gbr. 8.4).
Seperti yang Anda lihat dalam diagram, aplikasi mendefinisikan dua model domain sesuai dengan persyaratan bisnis. Algoritma bisnis untuk mentransfer uang dari satu akun ke akun lain dijelaskan dalam kelas TransferService. Kelas TransferService dan AccountService terkait dengan pola "Model Domain" dalam aplikasi perusahaan.
Proxy untuk Pola Unduhan Yang Ditangguhkan
"Delayed loading" adalah pola desain yang digunakan oleh beberapa solusi ORM, misalnya, Hibernate, dalam aplikasi perusahaan untuk menunda inisialisasi objek hingga objek lain mengaksesnya, yaitu ketika dibutuhkan. Tujuan dari pola desain ini adalah untuk mengoptimalkan memori dalam aplikasi. Pola desain pemuatan tangguhan Hibernate diimplementasikan menggunakan objek proxy virtual. Untuk menunjukkan pemuatan yang tertunda, kami menggunakan proxy, tetapi itu tidak berlaku untuk pola "Wakil".
Pola Metode Pola untuk Dukungan Hibernasi di Musim Semi
Kerangka kerja Pegas menyediakan kelas pembantu untuk mengakses data di tingkat DAO, berdasarkan pola desain Metode Pola GoF. Kelas HibernateTemplate Spring framework mendukung operasi basis data seperti menyimpan, membuat, menghapus, dan memperbarui. Kelas ini memastikan bahwa hanya satu sesi Hibernate yang digunakan untuk setiap transaksi.
Integrasi Hibernate dengan Spring
Hibernate adalah kerangka kerja ketekunan ORM open source yang tidak hanya menyediakan pemetaan hubungan objek sederhana antara objek Java dan tabel database, tetapi juga menawarkan banyak fitur canggih untuk meningkatkan kinerja aplikasi, dan juga membantu meningkatkan pemanfaatan sumber daya, seperti caching , keterlambatan pemuatan, pengambilan data langsung, dan caching terdistribusi.
Spring menyediakan dukungan penuh untuk integrasi dengan kerangka kerja Hibernate, ia memiliki beberapa pustaka built-in yang memungkinkan untuk menggunakan Hibernate hingga 100%. Untuk mengatur pengaturan Hibernasi dalam aplikasi, Anda dapat menggunakan pola injeksi ketergantungan dan wadah IoC dari kerangka Spring.
Di bagian selanjutnya, kita akan mencari cara untuk mengkonfigurasi Hibernate dengan benar dalam wadah IoC dari framework Spring.
Menentukan Pengaturan Objek Hibernate SessionFactory dalam Wadah Musim Semi
Pendekatan terbaik untuk mengonfigurasi Hibernate dan teknologi penyimpanan lainnya dalam aplikasi perusahaan apa pun adalah dengan memisahkan objek bisnis dengan direktori sumber daya terprogram, seperti DataSource di JDBC atau SessionFactory di Hibernate. Sumber daya ini dapat digambarkan sebagai komponen dalam wadah Pegas. Tetapi akses ke mereka oleh objek bisnis membutuhkan referensi untuk mereka. Pertimbangkan kelas DAO berikut ini yang menggunakan objek SessionFactory untuk mengambil data untuk suatu aplikasi:
public class AccountDaoImpl implements AccountDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } // ... }
Seperti yang Anda lihat, kelas DAO, AccountDaoImpl, mengikuti pola injeksi ketergantungan. Untuk mengakses data, objek SessionFactory dari kerangka kerja Hibernate tertanam di dalamnya, dan terasa hebat di wadah IoC Spring. Objek SessionFactory dari kerangka kerja Hibernate adalah objek tunggal, menghasilkan objek utama dari antarmuka Hibernate, org.hibernate.Session. Objek SessionFactory mengelola objek Sesi dan juga bertanggung jawab untuk membuka dan menutupnya. Antarmuka Sesi berisi fungsionalitas akses data nyata - simpan (simpan), perbarui (perbarui), hapus (hapus) dan muat (muat) objek dari database. Dalam aplikasi, objek dari kelas AccountDaoImpl atau repositori lainnya melakukan semua operasi penyimpanan data yang diperlukan menggunakan objek Sesi ini.
Kerangka kerja Spring menyediakan modul bawaan Hibernate, sehingga Anda dapat menggunakan komponen Hibernate SessionFactory di aplikasi Anda.
Komponen org.springframework.orm.hibernate5.LocalSessionFactoryBean adalah implementasi dari antarmuka Spring FactoryBean. LocalSessionFactoryBean didasarkan pada pola Abstrak Factory, yang menghasilkan objek SessionFactory dalam aplikasi. Objek ini dapat dikonfigurasi sebagai komponen dalam konteks aplikasi Spring sebagai berikut:
@Bean public LocalSessionFactoryBean sessionFactory(DataSource dataSource) { LocalSessionFactoryBean sfb = new LocalSessionFactoryBean(); sfb.setDataSource(dataSource); sfb.setPackagesToScan(new String[] { "com.packt.patterninspring.chapter8.bankapp.model" }); Properties props = new Properties(); props.setProperty("dialect", "org.hibernate.dialect.H2Dialect"); sfb.setHibernateProperties(props); return sfb; }
Dalam kode ini, kami mengkonfigurasi objek SessionFactory sebagai komponen menggunakan kelas LocalSessionFactoryBean dari kerangka kerja Spring. Metode komponen ini menerima objek bertipe DataSource sebagai argumen, yang menentukan lokasi dan metode koneksi ke database. Kami juga menentukan paket mana yang akan dilihat dengan menetapkan nilai "com.packt.patterninspring.chapter8.bankapp.model" untuk properti setPackagesToScan komponen LocalSessionFactoryBean, dan mengatur properti dialek komponen SessionFactory menggunakan metode setHibernateProperties untuk menunjukkan jenis database yang kami miliki dengan masalah dalam aplikasi.
Sekarang, setelah menyiapkan komponen Hibernate SessionFactory, dalam konteks aplikasi Spring, mari kita lihat bagaimana kita dapat mengimplementasikan objek akses data untuk tingkat penyimpanan aplikasi kita.
Tentang penulis
Dinesh Rajput adalah pemimpin redaksi situs web Dineshonjava, sebuah blog teknis yang didedikasikan untuk teknologi Java dan Spring. Situs ini berisi artikel tentang teknologi Java. Dinesh adalah seorang blogger, penulis buku, sejak 2008 seorang penggemar Musim Semi, seorang spesialis bersertifikat di Pivotal (Pivotal Certified Spring Professional). Dia memiliki lebih dari satu dekade pengalaman desain dan pengembangan menggunakan Java dan Spring. Ia berspesialisasi dalam bekerja dengan versi terbaru dari Spring Framework, Spring Boot, Spring Security, membuat API REST, arsitektur layanan mikro, pemrograman reaktif, pemrograman berorientasi aspek menggunakan Spring, pola desain, Struts, Hibernate, layanan web, Spring Batch, Cassandra, MongoDB, arsitektur aplikasi web.
Saat ini, Dinesh bekerja sebagai manajer teknologi di salah satu perusahaan terkemuka di bidang pengembangan perangkat lunak. Dia adalah pengembang dan pemimpin tim di Bennett, Coleman & Co. Ltd, dan sebelum itu, pengembang terkemuka di Paytm. Dinesh sangat antusias dengan teknologi Java terbaru dan suka menulisnya di blog teknis. Dia adalah anggota aktif komunitas Java dan Spring di berbagai forum. Dinesh adalah salah satu spesialis terbaik di Jawa dan Musim Semi.
Tentang Peninjau
Rajiv Kumar Mohan memiliki pengalaman luas dalam pengembangan perangkat lunak dan pelatihan perusahaan. Selama 18 tahun, ia telah bekerja di perusahaan IT besar seperti IBM, Pentasoft, Sapient, dan Deft Infosystems. Dia memulai karirnya sebagai seorang programmer, memimpin banyak proyek.
Dia adalah seorang ahli dalam bidang subjek Java, J2EE dan kerangka kerja terkait, Android, teknologi UI. Disertifikasi oleh Sun sebagai Programmer Java (SCJP, Programmer Java Certified Sun) dan Java Web Developer (Pengembang Komponen Web Sun Certified, SCWCD). Rajiv memiliki empat pendidikan tinggi: di bidang ilmu komputer (Ilmu Komputer), ilmu komputer terapan (Aplikasi Komputer), kimia organik, dan administrasi bisnis (MBA). Dia adalah konsultan perekrutan dan pakar pelatihan di HCL, Amdocs, Steria, TCS, Wipro, Universitas Oracle, IBM, CSC, Genpact, Sapient Infosys, dan Capgemini.
Rajeev adalah pendiri SNS Infotech, sebuah perusahaan yang berlokasi di kota Greater Noida. Selain itu, ia bekerja di Institut Teknologi Mode Nasional (NIFT).
»Informasi lebih lanjut tentang buku ini dapat ditemukan di
situs web penerbit»
Isi»
KutipanKupon diskon 20% untuk penjaja -
Musim Semi