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

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

使用 DAO 模式對數(shù)據(jù)進行建模和訪問

使用 DAO 模式對數(shù)據(jù)進行建模和訪問

慕桂英546537 2021-07-20 21:53:24
我正在用 Java 創(chuàng)建一個非常簡單的應(yīng)用程序,它將在嵌入式 Derby 數(shù)據(jù)庫中存儲問題。我決定使用 DAO 模式來訪問數(shù)據(jù)庫中的數(shù)據(jù)。我不能在這個項目中使用 ORM。一個問題將包含我通常會在關(guān)系數(shù)據(jù)庫中使用多對一關(guān)系建模的數(shù)據(jù)。此數(shù)據(jù)的一個示例是:一個問題將有一個類別。一類將有多個問題。一個問題的分數(shù)會是 1000、2000 或 3000。一個分數(shù)會有很多問題??紤]到上述情況,我將創(chuàng)建三個表(括號表示列):問題(id、問題、scoreId、categoryId)分數(shù)(id,分數(shù))類別(id,類別)我的第一個問題是:像我上面建議的那樣在三個表中對我的數(shù)據(jù)進行建模是不好的做法/錯誤的方法嗎?將分數(shù)和類別存儲在單獨的表中是否有任何好處?或者將它們合并到問題表中會更好嗎?鏈接到具有單列的表(id 除外)的多對一關(guān)系對我來說似乎是多余的,因為不是存儲引用分數(shù)/類別表的 id,我們可以簡單地存儲類別/分數(shù)的值(因為類別/分數(shù)表不存儲任何附加信息)。我的第二個問題是:如果在不同的表中建模我的數(shù)據(jù)是正確的方法,那么我將如何使用 DAO 模式訪問數(shù)據(jù)?我的困惑來自以下幾點:我會創(chuàng)建一個 DAO 來填充一個Question看起來像這樣的模型對象:public class Question {    String question;    String category;    Integer score;}我會像這樣創(chuàng)建 DAO 接口的具體實現(xiàn):public class QuestionAccessObject implements QuestionDao {    private static final String TABLE_1 = "QUESTION";     private static final String TABLE_2 = "SCORE";    private static final String TABLE_3 = "CATEGORY";    @Override    public List<Question> getAllQuestions() {        List<Question> questions = new ArrayList<>();        //Run a query with joins across the three tables and iterate over the result to populate the list        return questions;    }}每個 DAO 對象不應(yīng)該只關(guān)心數(shù)據(jù)庫中的一個表嗎?我上面列出的方法似乎不是解決此問題的最正確方法。單獨的表也會使向數(shù)據(jù)庫中插入數(shù)據(jù)變得非常混亂(我不明白如何使用 DAO 模式和多個表采取干凈的方法)。為 Score 和 Category 表創(chuàng)建 DAO 真的沒有意義..(如果我這樣做,我將如何填充我的模型?)
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經(jīng)驗 獲得超7個贊

像我上面建議的那樣在三個表中對我的數(shù)據(jù)進行建模是不好的做法/錯誤的方法嗎?在單獨的表中存儲分數(shù)和類別有什么好處......?

這是一個討論的問題。如果score我寧愿將此信息與question. 另一方面,category將在單獨的表格中,因為更多的問題將共享相同的類別,因此它非常有意義。

每個 DAO 對象不應(yīng)該只關(guān)心數(shù)據(jù)庫中的一個表嗎?

是的,DAO,一個對象應(yīng)該關(guān)注單一的數(shù)據(jù)源——正如你所說。我當(dāng)然會盡量避免任何,ComplexDao因為這些類往往會變得更復(fù)雜,而且方法的數(shù)量會隨著時間的推移而增加。

存在一個服務(wù)層將這些結(jié)果組合在一起,并使用相同的服務(wù)向控制器提供輸出。


查看完整回答
反對 回復(fù) 2021-07-29
  • 2 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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