繼承在開發中的使用

2021-08-30 14:49:06 字數 3402 閱讀 2595

前段時間,紅帽公司的高階架構師來公司培訓了hibernate的高階應用,因為本人是做前台轉到做後台的,所有好多東西是雲裡霧裡的。當時老師講到領域模型設計以及hibernate的繼承的使用,剛開始並沒理解物件繼承的作用,感覺繼承也減少不了多少工作量。而且hibernate的延遲載入還不支援 向下轉型 和instanceof 以為這東西在我實際開發中使用價值不大。但最近的乙個專案,我試著使用領域模型進行設計並且在實施中發現了許多好處。

任務計畫需求:任務計畫分個人任務:也就是私人任務;定期性任務:就是固定時間要做的一些任務,比如上傳報表之類的任務.;工作任務:就是上級指派給下級需要完成的任務。

這三種任務在不同的介面進行增加,但需要在乙個介面進行展示,也就是現在業界比較流行的日檢視,周檢視,月檢視之類的。這種情況採用繼承就比較方便

任務計畫的物件xml為

修改人工號

修改時間

歸檔標誌

授權角色名稱

授權角色id串

授權機構id串

授權機構名稱

授權人id串

授權人姓名

開始時間

結束時間

任務型別

提醒時間

任務內容

主題任務狀態

內部簡訊

發布人姓名

發布人工號

採用union-subclass模式,該模式為每個子類生成乙個對應的資料庫表。

因為在統一介面展示,如果採用以前的設計方式 ,在進行crud時如果從前台傳入乙個id ,後台可能不知道是屬於哪個類的物件,只能由程式設計師寫原生sql或者遍歷去找該物件後再操作,而現在使用繼承方式的話,這些工作hibernate就會幫我們自己完成。比如get物件通過id。

select

task0_.task_id as task1_21_0_,

task0_.update_by as update2_21_0_,

task0_.update_time as update3_21_0_,

task0_.archive_flag as archive4_21_0_,

task0_.accredit_role_name as accredit5_21_0_,

task0_.accredit_role_id as accredit6_21_0_,

task0_.accredit_org_id as accredit7_21_0_,

task0_.accredit_org_name as accredit8_21_0_,

task0_.accredit_user_id as accredit9_21_0_,

task0_.accredit_user_name as accredit10_21_0_,

task0_.start_time as start11_21_0_,

task0_.end_time as end12_21_0_,

task0_.task_type as task13_21_0_,

task0_.awoke_time as awoke14_21_0_,

task0_.task_content as task15_21_0_,

task0_.task_title as task16_21_0_,

task0_.task_state as task17_21_0_,

task0_.inner_note as inner18_21_0_,

task0_.issuance_name as issuance19_21_0_,

task0_.issuance_id as issuance20_21_0_,

task0_.clazz_ as clazz_0_

from

( select

accredit_role_name,

inner_note,

task_content,

accredit_org_name,

awoke_time,

task_id,

task_type,

accredit_role_id,

accredit_user_name,

update_by,

task_state,

update_time,

end_time,

accredit_org_id,

issuance_id,

task_title,

start_time,

issuance_name,

archive_flag,

accredit_user_id,

1 as clazz_

from

oa_individual_task

union

select

accredit_role_name,

inner_note,

task_content,

accredit_org_name,

awoke_time,

task_id,

task_type,

accredit_role_id,

accredit_user_name,

update_by,

task_state,

update_time,

end_time,

accredit_org_id,

issuance_id,

task_title,

start_time,

issuance_name,

archive_flag,

accredit_user_id,

2 as clazz_

from

oa_period_task

union

select

accredit_role_name,

inner_note,

task_content,

accredit_org_name,

awoke_time,

task_id,

task_type,

accredit_role_id,

accredit_user_name,

update_by,

task_state,

update_time,

end_time,

accredit_org_id,

issuance_id,

task_title,

start_time,

issuance_name,

archive_flag,

accredit_user_id,

3 as clazz_

from

oa_work_task

) task0_

where

task0_.task_id=?

在團隊開發中git的使用

通過團隊開發讓知道git在團隊中的使用。應該注意的事項 git的使用分為兩種,一種是客戶端,一種是終端,我採用的是終端。蘋果開發一搬採用的是蘋果電腦,系統終端自帶git指令 在上傳 之前必須進行下啦 命令如下 git add git commit frist git pull origin mast...

在遊戲開發中的使用icade手柄

當ab兩個按鍵同時按下時,會表示為手柄上的g鍵被按下,同時ab兩個按鍵被鬆開。當cd兩個按鍵同時按下時,會表示為手柄上的h鍵被按下,同時cd兩個按鍵被鬆開。在網上找到了乙個相關的 手柄使用鍵盤的按鍵來代替手柄按鍵,實際上icade手柄是作為乙個鍵盤連線到遊戲中的。下邊是icade規定的按鍵值 up ...

在團隊專案開發中SVN的使用

1.svn目錄解析,以下為版本庫 簡單介紹 trunk為主分支,是日常專案開發的地方 branches是分支,一些階段性的release版本,這些版本是可以開發和維護的,放在 branches目錄下。又比如不同使用者客製化的版本,也可以放在分支中進行開發。tags一般為唯讀的,這裡只是儲存階段性發布...