第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DAO調(diào)用DAO,DAO調(diào)用服務(wù)還是SQL加入?

DAO調(diào)用DAO,DAO調(diào)用服務(wù)還是SQL加入?

小唯快跑啊 2022-08-03 10:14:01
所以我正在寫一個個人項目來學(xué)習(xí)Web編程,我遇到了DAO模式。我構(gòu)建了一些類(模型),并且像幾乎任何程序一樣,它們是嵌套的(例如:類Payment具有對Author實例的引用)。僅供參考,我沒有使用任何映射器(將在以后的迭代中添加它們,并且我使用的是JDBC,而不是JPA)。我的問題是這樣的:當(dāng)我創(chuàng)建PaymentJdbcDao時,我有一個方法將返回一些付款,但是為了從數(shù)據(jù)庫存儲對象創(chuàng)建此付款,我還必須聯(lián)系作者(存儲在單獨(dú)的表中)。我應(yīng)該從PaymentJdbcDao調(diào)用UserJdbcDao以獲取付款的作者,我應(yīng)該使用聯(lián)接來更改查詢以從兩個實體中檢索字段,PaymentJdbcDao是否應(yīng)該調(diào)用UserService(我認(rèn)為這不好,因為服務(wù)位于daos的層上),或者我應(yīng)該刪除作者引用作為對象并僅保留對author_id的引用?哪種abobe是實現(xiàn)這一目標(biāo)的更合適的方法?還是其他更好的做法?
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗 獲得超6個贊

我將我的DAO(DataAccessObjects)稱為“存儲庫”。


Spring Data JPA也在這樣做。


所以我會創(chuàng)建一個UserRepository和一個PaymentRepository。


存儲庫可由其他存儲庫或服務(wù)調(diào)用。


服務(wù)永遠(yuǎn)不應(yīng)由存儲庫調(diào)用。


UI ->服務(wù) -> 存儲庫。


您的付款存儲庫可能會返回這樣的實體


public class PaymentEntity{

    private long id;

    private DateTime dateTime;

    private UserEntity user;

}

您的用戶存儲庫可能會返回這樣的實體


public class UserEntity{

    private long id;

    private DateTime lastLogin;

    private List<PaymentEntity> payments;

}

您的存儲庫可能如下所示。


public interface PaymentRepository{


    PaymentEntity getPaymentById(long id);

    List<PaymentEntity> getAllPayments();

}



public interface UserRepository{


    UserEntity getUserById(long id);

    List<UserEntity> getAllUsers();

}

因此,您的付款存儲庫將致電用戶存儲庫以獲取您的付款。


您的用戶存儲庫將調(diào)用付款存儲庫以獲取所有用戶的付款


我希望我能夠幫助你


查看完整回答
反對 回復(fù) 2022-08-03
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號