日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

轉:傳智播客—jbpm與OA項目(四)

系統(tǒng) 2144 0

上一節(jié)課我們已經(jīng)完成了 OA 項目的基礎部分,對 DAO BEAN 的基本操作。今日開始學習 OA 項目中“組織管理”這一部分。在學習的過程中,整體上難度相對比較簡單,更多的是項目經(jīng)驗上的學習。但在配置 hibernate 的映射文件時,大家有些應付不來。我也不例外,一對一映射關系我掌握的不好。但湯兄弟為人正直、善良,他在晚上下課后給我們被了 ???

?

這個項目雖然未詳細涉及企業(yè)項目開發(fā)中各方面細節(jié),但整個框架是按照這個流程走的。

?

組織機構部分

一、設計部分

1. 了解需求:

我們沒有進行詳細的需求分析,湯兄弟在前天給我發(fā)了一個完成的頁面層(靜態(tài)頁面)。需求一眼就看穿了。

1) ???????? 部門管理:增、刪、改、查、(子部門)

2) ???????? 崗位管理:增、刪、改、查

3) ???????? 員工管理:增、刪、改、查

?

正如你所看到的,搞應用不就是對數(shù)據(jù)庫的增、刪、改、查嗎? Java 將應用做的十分好,而且在繼續(xù)發(fā)展。哦!這些對她來說太簡單了。

?

2. 設計實體

設計實體的兩種方式:

1) ???????? 對象 --> 表:正向工程。(推薦)

2) ???????? --> 對象:反向工程。

?

?

在早之前的開發(fā)中,常見的是第二種方式先設計數(shù)據(jù)表格,然后再編程定接口。但隨著 Java 的日益強大,這一過程被反過來了。面向對象的似乎還有很大的潛力!

?

設計實體時,我們需要考慮用到了哪些(幾個)實體?實體之間的關系是什么?實體具有哪些屬性?我們所說的實體就是 Bean 。湯兄弟使用 StarUML 給大家把所有的實體和實體之間的關系畫了出來,我十分喜歡畫圖,感覺似乎比編碼好多了。我在下面也跟著湯兄弟把圖畫出來了:

?

clip_image002

?

然后 UML 課程在 OA 項目之后,但看著這圖多專業(yè) ~~ !!

?

我們的實現(xiàn)流程:

設計實體 -->JavaBean--> 映射文件 --> 生成表 -->...

?

設計實體 -->JavaBean 都比較容易,因為我們使用了 hibernate 所以生成表也不需要我們來做了。這個流程中最為復雜的是映射文件。因為 hibernate 才講了三天, OA 項目中算是第一次應用 hibernate 寫東西。

?

部門實體的映射文件( department ):

< class name = "Department" table = "ccoa_department" >

??? < id name = "id" column = "id" >

??????? < generator class = "native" />

??? </ id >

??? < property name = "name" />

??? <!-- 與上級部門(多對一) -->

??? < many-to-one name = "parent" column = "parentId" class = "Department" />

??? <!-- 與子部門(一對多) --> ???????

? ?? < set name = "children" >

? ?? ??? < key column = "parentId" />

? ?? ??? < one-to-many class = "Department" />

? ?? </ set >

??? <!-- 部門與員工(一對多關系映射) -->

??? < set name = "employees" >

??? ??? < key column = "departmentId" />

??? ??? < one-to-many class = "Employee" />

??? </ set > ????????

</ class >

?

職員實體的映射文件( employee ):

< class name = "Employee" table = "ccoa_employee" >

??? < id name = "id" column = "id" >

??????? < generator class = "native" />

?? ? </ id >

??? < property name = "name" />

??? < property name = "sex" />

? ? < property name = "employTime" type = "date" />

??? < property name = "phone" />

??? < property name = "email" />

??? < property name = "description" />

??? ???

? ? <!-- 員工對部門(多對一關系映射) -->

??? < many-to-one name = "department" column = "departmentId" />

???

??? <!-- 員工對崗位(多對多關系映射) -->

??? < set name = "roles" table = "ccoa_employee_roles" >

??? ??? < key column = "employeeId" ></ key >

??? ??? < many-to-many class = "Role" column = "roleId" />

??? </ set >

???

??? <!-- 員工對帳戶(一對一關系映射) -->

??? < one-to-one name = "user" class = "User" />

</ class >

?

崗位實體的映射文件( role ):

< class name = "Role" table = "ccoa_role" >

??? < id name = "id" column = "id" >

??????? < generator class = "native" />

??? </ id >

??? < property name = "name" />

??? < property name = "description" />

??? <!-- 崗位與員工(多對多關系映射) -->

??? < set name = "employees" ? table = "ccoa_employee_roles" >

??? < key column = "roleId" />

??? < many-to-many class = "Employee" column = "employeeId" />

??? </ set >

</ class >

?

用戶實體的映射文件( user ):

< class name = "User" table = "ccoa_user" >

??? < id name = "id" column = "id" >

??????? < generator class = "foreign" >

??????? < param name = "property" > employee </ param >

??????? </ generator >

??? </ id >

??? < property name = "loginName" />

??? < property name = "password" />

??? <!-- 帳戶與員工(一對一關系映射) -->

??? < one-to-one name = "employee" class = "Employee" constrained = "true" />

</ class >

?

這些映射規(guī)則設計的比較合理。但 JDO 已經(jīng)比它要簡單的多了。我們學習一些 hibernate 的關系映射也是十分有必要的。今天晚上湯兄弟給我復習了一下 hibernate 的映射關系,感覺沒什么難的。湯兄弟說,如果大家對 hibernate 有了全局的認識。 Hibernate 很簡單,就那么點東西。

?

二、實現(xiàn)部分

上邊我們完成了設計部分,接下來我們來完成實現(xiàn)部分。湯老師是一位比較有經(jīng)驗的老師,他領著大家做 OA 時,是由框架到實現(xiàn),一層一層的去實現(xiàn)我們需要的功能。而不是先設計了一個框架,然后具體去實現(xiàn)某一需求。一層一層的懂嗎?就像剝洋蔥,一層一層的,而不是切洋蔥。

?

實現(xiàn)部分我們首先實現(xiàn) Action ,因為由第一部分我需求我們了解到。每一個管理模塊都有增、刪、改、查。在我們學習 Servlet 時,我們編寫一個 Servlet 對應一個操作請求,那我們得寫多少個 Servlet 啊!但我們在學習 Struts1 時,接觸到了一個 DispatchAction ,我們可以將某一管理模塊的操作請求全部放到一個 DispatchAction 里,所以在這里我們使用了 DispatchAction

?

我們按原計劃使用三層以實現(xiàn),接下來開始編寫 Servicen 層。哇賽,你知道多么簡單嗎?因為我們事先編寫了 BeanDaoImpl ,所以在 Service 層中直接調用 BeanDaoImlp 實例的方法即可,此時的 Service 層顯得十分沒有必要,浪費得很。

?

繼續(xù)看,我們的 BeanDaoImpl 繼承自 BaseDaoImpl 。我們的 BeanDaoImpl 并未寫任何方法,使用的全是父類 BaseDaoImpl 的方法。此時 BeanDaoImpl 顯得也很浪費,那么我們就將它們“ @Deprecated ”掉。

?

我們直接將 Service Dao 層合并,并且使用 BaseDaoImpl 這一個類的實例就可以了!

?

BaseDaoImpl 內部使用 Hibernate session 實現(xiàn)對數(shù)據(jù)庫的操作。 YEA Hibernate 全幫我們做了。經(jīng)典!

?

三、顯示部分

顯示部分我們使用的全是 JSP 頁面,表單的檢驗我們使用的是 JavaScript ,數(shù)據(jù)顯示使用的是 JSTL EL 表達式。就這么簡單, OK 了!

?

今天我們只完成了 Role (職員)管理這一部分,其他的管理模塊都按照這個模塊的流程來。速度非常之快!

?

Java 特性所能發(fā)輝的功力, Java 之父早就想到了嗎?

轉:傳智播客—jbpm與OA項目(四)


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 蕲春县| 游戏| 大方县| 宁陕县| 平原县| 民乐县| 新民市| 荥阳市| 鄱阳县| 卓资县| 高碑店市| 新疆| 肥乡县| 和林格尔县| 怀安县| 金门县| 东乡族自治县| 射洪县| 集安市| 咸宁市| 盐源县| 库尔勒市| 宁阳县| 肥城市| 雷山县| 榆中县| 库伦旗| 乌拉特前旗| 如东县| 仪征市| 海林市| 巴林右旗| 达尔| 陆良县| 珠海市| 瑞金市| 青冈县| 城市| 儋州市| 老河口市| 石首市|