Biasanya, Data Mapper memetakan data dari satu tabel tertentu. (Secara teoritis seharusnya berkomunikasi antara Storage dan Objek Domain, tetapi tidak mungkin dalam kasus saya, jadi saya langsung berkomunikasi dengan tabel.)
Table1Mappper> Table1
Tetapi jika tabel itu membutuhkan data untuk bergabung dari tabel lain, maka Anda memperluas ruang lingkup Pemeta Data Anda yang seharusnya hanya memetakan dari satu tabel.
Table1Mapper> Table1: inner-join: Table2
Bukankah lebih baik jika Table2 memiliki mapper sendiri Table2Mapper
untuk memetakan datanya?
Jika Anda berpikir Yes
, maka jika Anda ingin menampilkan daftar catatan dari Table1Mapper dan kemudian menggunakan Table2Mapper untuk mendapatkan data yang seharusnya digabungkan, Anda akan menjalankan kueri dalam satu lingkaran, yang juga tidak bagus.
Apa wawasan Anda tentang hal ini?
Cara lain adalah mengubah mapper Anda untuk menangani sub tabel?
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
Yang menurut saya baik-baik saja, tetapi hanya sampai ruang lingkup seluruh mapper berurusan satu entitas tertentu dalam aplikasi. Sebagai contoh post
dan post_author
. Tetapi jika cakupannya berbeda seperti post
dan gallery
, di atas tidak akan memberikan data mapper yang ideal. Untuk menggambarkan hal ini
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
Apa tidak benar kan? Tetapi bagaimanapun Anda ingin mengambil galeri dari satu posting dalam satu query, karena menambahkan overhead query dalam satu loop bukanlah kinerja solusi yang baik.
Menurut Anda apa cara yang tepat untuk menyelesaikan masalah ini dalam Pola DataMapper / atau pola lainnya jika memiliki cara yang lebih baik dalam menangani kasus-kasus seperti itu?