freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

企業(yè)資產(chǎn)管理系統(tǒng)中電子報(bào)表功能的設(shè)計(jì)和實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-08-23 10:03 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 者聲明式事務(wù)支持那么 Spring 是一個(gè)更好的選擇。 在我看來(lái) Spring 的核心就是兩個(gè)概念,反向控制( IoC),面向切面編程( AOP)。還有一個(gè)相關(guān)的概念是 POJO,我也會(huì)略帶介紹。 POJO 我所看到過(guò)的 POJO 全稱有兩個(gè), Plain Ordinary Java Object, Plain Old Java Object,兩個(gè)差不多,意思都是普通的 Java 類,所以也不用去管誰(shuí)對(duì)誰(shuí)錯(cuò)。 POJO可以看做是簡(jiǎn)單的 JavaBean(具有一系列 Getter, Setter 方法的類)。嚴(yán)格區(qū)分這里面的概念沒(méi)有太大意義,了解一下就行。 IoC IoC 的全稱是 Inversion of Control,中文翻譯反向控制或者逆向控制。這里的反向是相對(duì) EJB 來(lái)講的。 EJB 使用 JNDI 來(lái)查找需要的對(duì)象,是主動(dòng)的,而 Spring是把依賴的對(duì)象注入給相應(yīng)的類(這里涉及到另外一個(gè)概念“依賴注入”,稍后解釋),是被動(dòng)的,所以稱之為“反向”。 ( AOP) 切面編程就類似于動(dòng)態(tài)代理,比如你寫了很多方法,在使用這些方法前需要做很多相同的操作,那樣你必須在每個(gè)方 法前加上很多很多相同的代碼,那樣你的代碼會(huì)看起來(lái)很冗長(zhǎng),而且寫起來(lái)很會(huì)很讓人絕望。切面編程( AOP)技術(shù)就能大大的減少你的工作量。 AOP 技術(shù)涉及到的概念有: aspect,就哪些你要重復(fù)在其他方法前或后或中間執(zhí)行的方法; Pointcut,就是聲明是哪些方法會(huì)被插入 aspect; ,就是聲明在 pointcut 之前還是之后執(zhí)行; 在定義好這三點(diǎn),你就能實(shí)現(xiàn) AOP 技術(shù)了。 Hibernate 簡(jiǎn)介 報(bào)表實(shí)現(xiàn)和數(shù)據(jù)庫(kù)的關(guān)系很密切,對(duì) Hibernate 的介紹會(huì)稍為的全面點(diǎn)。 Hibernate 是一個(gè)免費(fèi)的開(kāi)源 Java 包,它使得與關(guān)系數(shù)據(jù)庫(kù)打交道變得十分輕松,就像您的數(shù)據(jù)庫(kù)中包含每天使用的普通 Java 對(duì)象一樣,同時(shí)不必考慮如何把它們從神秘的數(shù)據(jù)庫(kù)表中取出(或放回到數(shù)據(jù)庫(kù)表中)。它解放了您,使您可以專注于應(yīng)用程序的對(duì)象和功能,而不必?fù)?dān)心如何保存它們或稍后如何找到它們。 本文討論以下內(nèi)容: 歷史與背景 大多數(shù)應(yīng)用程序都需要處理數(shù)據(jù)。 Java 應(yīng)用程序運(yùn)行時(shí),往往把數(shù)據(jù)封裝為相互連接的對(duì)象網(wǎng)絡(luò),但是當(dāng)程序結(jié)束時(shí),這些對(duì)象就會(huì)消失在一團(tuán)邏輯中,所以需要有一些保存它們的方法。有時(shí)候,甚至在編寫應(yīng)用 程序之前,數(shù)據(jù)就已經(jīng)存在了,所以需要有讀入它們和將其表示為對(duì)象的方法。手動(dòng)編寫代碼來(lái)執(zhí)行這些任務(wù)不僅單調(diào)乏味、易于出錯(cuò),而且會(huì)占用整個(gè)應(yīng)用程序的很大一部分開(kāi)發(fā)工作量。 優(yōu)秀的面向?qū)ο箝_(kāi)發(fā)人員厭倦了這種重復(fù)性的勞動(dòng),他們開(kāi)始采用通常的“積極”偷懶做法,即,創(chuàng)建工具,使整個(gè)過(guò)程自動(dòng)化。對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),這種努力的最大成果就是對(duì)象 /關(guān)系映射 (ORM)工具。 這類工具有很多,從昂貴的商業(yè)產(chǎn)品到內(nèi)置于 J2EE 中的 EJB 標(biāo)準(zhǔn)。然而,在很多情況下,這些工具具有自身的復(fù)雜性,使得開(kāi)發(fā)人員必須學(xué)習(xí)使用它們的 詳細(xì)規(guī)則,并修改組成應(yīng)用程序的類以滿足映射系統(tǒng)的需要。由于這些工具為應(yīng)付更加嚴(yán)格和復(fù)雜的企業(yè)需求而不斷發(fā)展,于是在比較簡(jiǎn)單和常見(jiàn)的場(chǎng)景中,使用它們所面臨的復(fù)雜性反而蓋過(guò)了所能獲得的好處。這引起了一場(chǎng)革命,促進(jìn)了輕量級(jí)解決方案的出現(xiàn),而 Hibernate 就是這樣的一個(gè)例子。 Hibernate 的工作方式 Hibernate 不會(huì)對(duì)您造成妨礙,也不會(huì)強(qiáng)迫您修改對(duì)象的行為方式。它們不需要實(shí)現(xiàn)任何不可思議的接口以便能夠持續(xù)存在。惟一需要做的就是創(chuàng)建一份 XML“映射文檔”,告訴 Hibernate 您希望能夠保存 在數(shù)據(jù)庫(kù)中的類,以及它們?nèi)绾侮P(guān)聯(lián)到該數(shù)據(jù)庫(kù)中的表和列,然后就可以要求它以對(duì)象的形式獲取數(shù)據(jù),或者把對(duì)象保存為數(shù)據(jù)。與其他解決方案相比,它幾乎已經(jīng)很完美了。 運(yùn)行時(shí), Hibernate 讀取映射文檔,然后動(dòng)態(tài)構(gòu)建 Java 類,以便管理數(shù)據(jù)庫(kù)與 Java之間的轉(zhuǎn)換。在 Hibernate 中有一個(gè)簡(jiǎn)單而直觀的 API,用于對(duì)數(shù)據(jù)庫(kù)所表示的對(duì)象執(zhí)行查詢。要修改這些對(duì)象,(一般情況下)只需在程序中與它們進(jìn)行交互,然后告訴 Hibernate 保存修改即可。類似地,創(chuàng)建新對(duì)象也很簡(jiǎn)單;只需以常規(guī)方式創(chuàng)建它們,然后告訴 Hibernate 有關(guān)它們的信息,這樣就能在數(shù)據(jù)庫(kù)中保存它們。 Hibernate API 學(xué)習(xí)起來(lái)很簡(jiǎn)單,而且它與程序流的交互相當(dāng)自然。在適當(dāng)?shù)奈恢谜{(diào)用它,就可以達(dá)成目的。它帶來(lái)了很多自動(dòng)化和代碼節(jié)省方面的好處,所以花一點(diǎn)時(shí)間學(xué)習(xí)它是值得的。而且還可以獲得另一個(gè)好處,即代碼不用關(guān)心要使用的數(shù)據(jù)庫(kù)種類(否則的話甚至必須知道)。我所在的公司就曾有過(guò)在開(kāi)發(fā)過(guò)程后期被迫更換數(shù)據(jù)庫(kù)廠商的經(jīng)歷。這會(huì)造成巨大的災(zāi)難,但是借助于 Hibernate,只需要簡(jiǎn)單地修改 Hibernate 配置文件即可。 這里的討論假定您已經(jīng)通過(guò)創(chuàng)建 Hibernate 映射文檔,建立了一個(gè)關(guān)系數(shù)據(jù)庫(kù),并且擁有要映射的 Java 類。有一個(gè) Hibernate“工具集”可在編譯時(shí)使用,以支持不同的工作流。例如,如果您已經(jīng)擁有 Java 類和映射文檔, Hibernate 可以為您創(chuàng)建(或更新)必需的數(shù)據(jù)庫(kù)表?;蛘?,僅僅從映射文檔開(kāi)始, Hibernate 也能夠生成數(shù)據(jù)類?;蛘?,它可以反向設(shè)計(jì)您的數(shù)據(jù)庫(kù)和類,從而擬定映射文檔。還有一些用于 Eclipse 的 alpha 插件,它們可以在 IDE 中提供智能的編輯支持以及對(duì)這些工具的圖形訪問(wèn)。 如果您使用的是 Hibernate 2 環(huán)境,這些工具鮮有提供,但是存在可用的第三方工具。 使用 Hibernate 的場(chǎng)合 既然 Hibernate 看起來(lái)如此靈活好用,為什么還要使用其他的工具呢?下面有一些場(chǎng)景,可以幫助您做出判斷(或許通過(guò)提供一些比較和上下文,可以有助于鑒別非常適用 Hibernate 的場(chǎng)合)。 如果應(yīng)用對(duì)于數(shù)據(jù)存儲(chǔ)的需要十分簡(jiǎn)單 —— 例如,您只想管理一組用戶優(yōu)先選擇—— 您根本不需要數(shù)據(jù)庫(kù),更不用說(shuō)一個(gè)優(yōu)秀的對(duì)象 關(guān)系映射系統(tǒng)了(即使它也如 Hibernate 這般易于使用)!從 Java 開(kāi)始,有一個(gè)標(biāo)準(zhǔn)的 Java Preferences API 可以很好地發(fā)揮這個(gè)作用。(在 ONJava 文章中可以找到有關(guān) Preferences API的更多信息。) 對(duì)于熟悉使用關(guān)系數(shù)據(jù)庫(kù)和了解如何執(zhí)行完美的 SQL 查詢與企業(yè)數(shù)據(jù)庫(kù)交互的人來(lái)說(shuō), Hibernate 似乎有些礙手礙腳,這就像帶有動(dòng)力和自動(dòng)排擋的快艇車會(huì)使注重性能的賽車駕駛員不耐煩一樣。如果您屬于這種人,如果您所在的項(xiàng)目團(tuán)隊(duì)擁有一個(gè)強(qiáng)大的 DBA,或者有一些存儲(chǔ)過(guò)程要處理,您可能想研究一下 iBATIS。Hibernate 的創(chuàng)建者本身就把 iBATIS當(dāng)作是另一種有趣的選擇。我對(duì)它很 有興趣,因?yàn)槲覀冊(cè)鵀橐粋€(gè)電子商務(wù)站點(diǎn)開(kāi)發(fā)了一個(gè)類似的系統(tǒng)(其功能更為強(qiáng)大),而且從那時(shí)到現(xiàn)在,我們已經(jīng)在其他環(huán)境中使用過(guò)它,盡管在發(fā)現(xiàn) Hibernate 之后,在新項(xiàng)目中我們通常更喜歡使用 Hibernate。您可以認(rèn)為,以 SQL 為中心的解決方案(比如 iBATIS)是“反向的”對(duì)象 /關(guān)系映射工具,而 Hibernate 是一個(gè)更為傳統(tǒng)的 ORM。 當(dāng)然,還有其他的外部原因會(huì)導(dǎo)致采用另外的方法。比如,在一個(gè)企業(yè)環(huán)境中,必須使用成熟的 EJB 架構(gòu)(或者其他的一些非普通對(duì)象映射系統(tǒng))。可以為提供自己的數(shù)據(jù)存儲(chǔ)工具的平 臺(tái)量身定做代碼,比如 Mac OS X39。s Core Data。使用的可能是像 XML DTD 這樣的存儲(chǔ)規(guī)范,而它根本不涉及關(guān)系數(shù)據(jù)庫(kù)。 但是,如果您使用的是富對(duì)象模型,而且想要靈活、輕松且高效地保存它(無(wú)論您是否正要開(kāi)始或已經(jīng)決定使用關(guān)系數(shù)據(jù)庫(kù),只要這是一個(gè)選擇 —— 而且存在可用的優(yōu)秀免費(fèi)數(shù)據(jù)庫(kù),比如 MySQL,或可嵌入 Java 的 HSQLDB,它就應(yīng)該始終是一個(gè)選擇),那么 Hibernate 很可能就是您理想的選擇。您可能會(huì)驚訝于節(jié)省的時(shí)間之多,以及您將會(huì)多么地喜歡使用它。 經(jīng)過(guò)一個(gè)月的實(shí)踐, Hibernate 技術(shù)需要為每張表寫一個(gè)對(duì)應(yīng)的類,類中的成員變量是表中每個(gè)字段對(duì)應(yīng)的類型和名字。然后,每個(gè)對(duì)應(yīng)的類,都需要寫出相應(yīng)的 DAO,就是增刪改查的方法。這個(gè) DAO 方法和 JDBC 中的 DAO 方法其實(shí)差不對(duì),hibernate 的方便之處是它能直接保存一個(gè)對(duì)象進(jìn)入數(shù)據(jù)庫(kù),那個(gè)對(duì)象就會(huì)成為數(shù)據(jù)庫(kù)中的一條記錄,而不用像 JDBC 那樣一個(gè)字段一個(gè)字段的賦值,然后保存。Hibernate 的所有操作都是針對(duì)對(duì)象的,而不是針對(duì)表中的某一個(gè)字段的,操作簡(jiǎn)介方便的,深受歡迎。在 Hibernate 出現(xiàn)的對(duì)象有三種狀態(tài): ,就是一個(gè) 對(duì)象剛剛 new 出來(lái),還沒(méi)有關(guān)聯(lián) session; ,就是這個(gè)對(duì)象與 session 關(guān)聯(lián),與數(shù)據(jù)庫(kù)的數(shù)據(jù)有對(duì)應(yīng), session 沒(méi)有關(guān)閉,但是事務(wù)沒(méi)有被提交。一旦事務(wù)提交后,它就會(huì)對(duì)數(shù)據(jù)庫(kù)產(chǎn)生影響; , session 已經(jīng)關(guān)閉,數(shù)據(jù)庫(kù)中沒(méi)數(shù)據(jù)與之對(duì)應(yīng),對(duì)它進(jìn)行改動(dòng)是不會(huì)影響到數(shù)據(jù)庫(kù)的。 Hibernate 的核心接口一共有 5 個(gè),分別為 :Session、 SessionFactory、Transaction、 Query 和 Configuration。這 5個(gè)核心接口在任何開(kāi)發(fā)中都會(huì)用到。通過(guò)這些接口,不僅可以對(duì) 持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這五個(gè)核心接口分別加以介紹。 Session 接口 :Session 接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的 CRUD 操作 (CRUD 的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見(jiàn)的 SQL語(yǔ)句。 )。但需要注意的是 Session對(duì)象是非線程安全的。同時(shí), Hibernate 的 session 不同于 JSP 應(yīng)用中的HttpSession。這里當(dāng)使用 session 這個(gè)術(shù)語(yǔ)時(shí),其實(shí)指的是 Hibernate 中的session,而以后會(huì)將 HttpSesion 對(duì)象稱為用戶 session。 SessionFactory 接口 :SessionFactory 接口負(fù)責(zé)初始化 Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建 Session 對(duì)象。這里用到了工廠模式。需要注意的是 SessionFactory 并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè) SessionFactory 就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory。 Configuration 接口 :Configuration 接口負(fù)責(zé)配置并啟動(dòng) Hibernate,創(chuàng)建SessionFactory 對(duì)象。 在 Hibernate 的啟動(dòng)的過(guò)程中, Configuration 類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建 SessionFactory 對(duì)象。 Transaction 接口 :Transaction 接口負(fù)責(zé)事
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1